কোনও ফাইলের "তৈরির তারিখ" এবং অন্য ফাইলের "সর্বশেষ পরিবর্তিত" বৈশিষ্ট্যগুলি পরিবর্তন করা


40

আমি 15 টি ফাইল থেকে মার্জ পিসিপি ফাইল তৈরি করতে মার্জ ক্যাপ ব্যবহার করছি। মার্জ হওয়া ফাইলের জন্য, আমি নামটি 15 টির মধ্যে প্রথমটিতে পরিবর্তন করেছি। তবে আমি মার্জ হওয়া ফাইলটির বৈশিষ্ট্যগুলিকে "তারিখ তৈরি হওয়ার" এবং "সর্বশেষ পরিবর্তিত" এর মতো প্রথমটির সাথেও পরিবর্তন করতে চাই। এই কাজ করতে কোন উপায় আছে কি?

FILES_dcn=($(find  $dir_dcn -maxdepth 1 -type f -name "*.pcap"  -print0 | xargs -0 ls -lt | tail -15 | awk '{print $9}'))
TAG1_dcn=$(basename "${FILES_dcn[14]}" | sed 's/.pcap//')
mergecap -w  "${dir_dcn}"/merge_dcn.pcap "${FILES_dcn[@]}"
mv  "${dir_dcn}"/merge_dcn.pcap  "${dir_dcn}"/"${TAG1_dcn}".pcap

আমি সাম্বা সার্ভারে (উবুন্টু) মার্জ হওয়া ফাইলগুলি অ্যাক্সেস করার চেষ্টা করি। যাতে কোনও এক্সট্রাক্টর ফাংশন ডি ফোল্ডারে স্বয়ংক্রিয়ভাবে ফাইলগুলি অ্যাক্সেস করতে পারে। তবে তৈরি করা তারিখটি মার্জড ফাইলের জন্য পরিবর্তিত হবে এবং নিষ্কাশন ব্যর্থ হয়। এই সমাধানের জন্য কোনো উপায় আছে কি?

উত্তর:


77

আপনি কোনও ফাইলে অন্য ফাইলের বৈশিষ্ট্য প্রয়োগ touchকরতে -rস্যুইচ সহ কমান্ডটি ব্যবহার করতে পারেন ।

দ্রষ্টব্য: ইউনিক্সে তৈরির তারিখের মতো জিনিস নেই, কেবলমাত্র অ্যাক্সেস, পরিবর্তন এবং পরিবর্তন রয়েছে। এই U&L প্রশ্নোত্তর শিরোনাম দেখুন: আরও তথ্যের জন্য প্রদত্ত ফাইলের বয়স পান

$ touch -r goldenfile newfile

উদাহরণ

উদাহরণস্বরূপ উদ্দেশ্যে এখানে goldenfileকিছু যা কিছু স্বেচ্ছাসেবী টাইমস্ট্যাম্প দিয়ে তৈরি হয়েছিল।

$ touch -d 20120101 goldenfile
$ ls -l goldenfile 
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 goldenfile

এখন আমি কিছু নতুন ফাইল তৈরি করছি:

$ touch newfile
$ ls -l newfile 
-rw-rw-r--. 1 saml saml 0 Mar  7 09:06 newfile

এখন goldenfileএর বৈশিষ্ট্য প্রয়োগ করুন newfile

$ touch -r goldenfile newfile 
$ ls -l goldenfile newfile
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 newfile
-rw-rw-r--. 1 saml saml 0 Jan  1  2012 goldenfile

এখন newfileএকই বৈশিষ্ট্য আছে।

সাম্বার মাধ্যমে পরিবর্তন করুন

আমি কেবল নিশ্চিত করেছি যে আমি আমার ফেডোরা 19 ল্যাপটপটি ব্যবহার করে এটি করতে সক্ষম হয়েছি যার মধ্যে থেকাস এন 12000 এনএএস-এর সাথে সংযুক্ত 1.16.3-2 সংস্করণ রয়েছে (সেন্টোস 5.x এর পরিবর্তিত সংস্করণ ব্যবহার করা হয়েছে)।

আমি উপরে উল্লিখিতভাবে একটি ফাইল স্পর্শ করতে সক্ষম হয়েছি এবং এটি আমার বর্ণনা অনুসারে কাজ করেছে। আপনার ইস্যুটি সম্ভবত মাউন্টিং অপশনগুলি ব্যবহার করা হচ্ছে যা একটি সমস্যা হতে পারে, যা নির্দিষ্ট সময়ের বৈশিষ্ট্যগুলির ট্র্যাকিং বাদ দিতে পারে, বা সম্ভবত এটি এই বাগগুলির সাথে সম্পর্কিত:


@ জিশনুউনায়ার - আপনি কীভাবে সাম্বার শেয়ারটি স্থাপন করা হচ্ছে তা পরীক্ষা করতে পারেন (কোন বিকল্পগুলির সাথে)? আপনি সাধারণত mountকমান্ড থেকে এগুলি পেতে পারেন এবং তারপরে আপনি যে অংশটি অ্যাক্সেস করছেন সেটিকে সন্ধান করতে পারেন। কেবল একটি অনুমান তবে এটি সম্ভবত একটি FUSE ফাইল সিস্টেম হিসাবে gvfs ব্যবহার করে মাউন্ট করা হচ্ছে।
slm

1
এখন প্রচুর ফাইল সিস্টেম একটি ফাইল তৈরির সময়কে সমর্থন করে। Ext4 এর জন্য, আপনি এটি দেখতে / পরিবর্তন করতে পারেন debugfs(যদিও এটির মূল অধিকার প্রয়োজন এবং এখানে কোনও ব্যবহার নেই)। এই প্রশ্নটি দেখুন - unix.stackexchange.com/questions/50177/birth-is-empty-on-ext4
গ্রামীণ

@ গ্রামীম - হ্যাঁ আমি চ্যাটরুমে স্ট্যাপ : ইউনিক্স.স্ট্যাকেক্সেঞ্জাওয়েজ / সেকশনস / ৯১১৯7/২ ব্যবহার করে ঠিক একই ধরণের পদ্ধতিটি উল্লেখ করেছি ।
slm

1
যদিও লিনাক্স কোনও সৃষ্টির সময় সমর্থন করে না, একটি সাম্বা শেয়ার পারে। আপনি এটি কীভাবে সেট আপ করেন তার উপর নির্ভর করে (এবং ফাইল সিস্টেমে xattr সমর্থন), সাম্বার মধ্যে লিনাক্স এক্সটটার্সে কিছু সময়ের স্ট্যাম্প সংরক্ষণ করার ক্ষমতা রয়েছে। এর অর্থ এটি অন্তর্নিহিত ফাইল সিস্টেমটি এমন জিনিসগুলি করতে সক্ষম হতে পারে - যেমন একটি বৈধ (পরিবর্তনযোগ্য) তৈরির সময় রিপোর্ট করুন। দুঃখিত, এটি কীভাবে কাজ করে তার কোনও ভাল লিঙ্ক আমি পাইনি।
পিটার

1
প্রকৃতপক্ষে বেশিরভাগ লিনাক্স ফাইল সিস্টেমগুলি (উদাহরণস্বরূপ, ext4) এখন তৈরির তারিখ সমর্থন করে এবং লিনাক্স 4.11 এ statx()এটি পুনরুদ্ধারের জন্য কল করবে। অবশেষে।
জেজ

36

সহজতম উপায় - অ্যাক্সেস করা সংশোধিত একই হবে:

touch -a -m -t 201512180130.09 fileName.ext

কোথায়:

-a = accessed
-m = modified
-t  = timestamp - use [[CC]YY]MMDDhhmm[.ss] time format

আপনি যদি ব্যবহার করতে চান তবে NOWকেবল ড্রপ tএবং টাইমস্ট্যাম্পটি ড্রপ করুন

এগুলি যাচাই করার জন্য তারা সমস্ত একই: stat fileName.ext

দেখুন: মানুষ টাচ


5
কোনওভাবে উবুন্টু 14.04 এ রাখার -aআগে -mঅ্যাক্সেসের সময় পরিবর্তন হয় না ... এটি পরে touch -m -a -t....
রাখুন

5
-d time_stringএর চেয়ে বেশি সহজ হতে পারে -t: -ড "2004-02-29 16:21:42"
ইউরেনচেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.