আমি লিনাক্স কমান্ডটি চাই যাতে শেষ n
সেকেন্ডে ফাইলগুলি পরিবর্তিত হয় ।
শেল স্ক্রিপ্ট বা অন্য কোন সরঞ্জাম রয়েছে যা আমি কমান্ড লাইন ইন্টারফেস বা জিইউআই থেকে চালাতে পারি?
আমি লিনাক্স কমান্ডটি চাই যাতে শেষ n
সেকেন্ডে ফাইলগুলি পরিবর্তিত হয় ।
শেল স্ক্রিপ্ট বা অন্য কোন সরঞ্জাম রয়েছে যা আমি কমান্ড লাইন ইন্টারফেস বা জিইউআই থেকে চালাতে পারি?
উত্তর:
এর মত ফাইন্ড কমান্ড ব্যবহার করুন:
find . -name "*.txt" -mtime -60s
*.txt
সর্বশেষ 60 সেকেন্ডে সংশোধিত সমস্ত ফাইলগুলি সন্ধান করতে ।
-mtime
। এমনকি পসিক্স বা জিএনইউ অনুসন্ধানে "60 এর দশক" এমনকি একটি বৈধ বিকল্প নয়। যুক্তি -mtime
হ'ল এমন একটি সংখ্যা যা কোনও ফাইল সংশোধিত হওয়ার আগে 24 ঘন্টা পর্যায়ক্রমে নির্দিষ্ট করে।
এমটাইম নির্দিষ্ট করে সেকেন্ড সহ সমাধানটি আমার লিনাক্স সিস্টেমে যে find --version
== ব্যবহার করে তা কার্যকর করে না find (GNU findutils) 4.4.2
।
আমি নিম্নলিখিত ত্রুটি পেয়েছি:
mycomputer:~/new$ find . -mtime -60s
find: missing argument to `-mtime'
mycomputer:~/new$ find . -mtime -60seconds
find: missing argument to `-mtime'
তবে, আমি ব্যবহার করতে পারি -mmin
(শেষ মুহুর্তের মধ্যে সংশোধিত জন্য), এবং এটি একটি দশমিক যুক্তিতে নিতে পারে; উদাহরণস্বরূপ, নিম্নলিখিত 30 সেকেন্ডে নিম্নলিখিত সংশোধিত ফাইলগুলি সন্ধান করে।
find . -mmin 0.5
সুতরাং উদাহরণস্বরূপ; গত 120 সেকেন্ডের জন্য, সর্বশেষ 1s, 6s, 11s, ... আগে ফাইলগুলি তৈরি করা, এই আদেশটি সন্ধান করে:
mycomputer:~/new$ for i in $(seq 1 5 120); do touch -d "-$i seconds" last_modified_${i}_seconds_ago ; done
mycomputer:~/new$ find . -mmin 0.5
.
./last_modified_1_seconds_ago
./last_modified_26_seconds_ago
./last_modified_11_seconds_ago
./last_modified_16_seconds_ago
./last_modified_21_seconds_ago
./last_modified_6_seconds_ago
সুতরাং আপনার যদি সত্যিই এটি প্রয়োজন হয় সেকেন্ডে আপনি এমন কিছু করতে পারেন:
localhost:~/new$ for i in $(seq 1 1 120); do touch -d "-$i seconds" last_modified_${i}_seconds_ago ; done
localhost:~/new$ N=18; find . -mmin $(echo "$N/60"|bc -l)
./last_modified_1_seconds_ago
./last_modified_9_seconds_ago
./last_modified_14_seconds_ago
./last_modified_4_seconds_ago
./last_modified_12_seconds_ago
./last_modified_13_seconds_ago
./last_modified_8_seconds_ago
./last_modified_3_seconds_ago
./last_modified_5_seconds_ago
./last_modified_11_seconds_ago
./last_modified_17_seconds_ago
./last_modified_16_seconds_ago
./last_modified_7_seconds_ago
./last_modified_15_seconds_ago
./last_modified_10_seconds_ago
./last_modified_6_seconds_ago
./last_modified_2_seconds_ago
গ্লেন যা বলেছিল তার অনুরূপ, আপনি যদি সমস্ত কিছু সংশোধিত সন্ধান করতে চান তবে বলুন, যে সময়ে কোনও ইনস্টলার প্রক্রিয়া চলমান ছিল, তেমন কিছু করা সহজ হতে পারে:
touch /tmp/checkpoint
<do installer stuff>
find / -newer /tmp/checkpoint
তারপরে আপনাকে সময় গণনা করতে হবে না; আপনি কেবল চেকপয়েন্ট ফাইলের পরে জিনিসগুলি পরিবর্তিত দেখতে পান।
এটি করার সহজ উপায় হ'ল:
find . -name "*.txt" -newermt '6 seconds ago'
-mtime -60s
বিকল্প, একটি উত্তর উল্লেখ করা হয়েছে, অনেক সংস্করণ এ কাজ করে না find
2016. এমনকি -newermt
আমাদের কাছে অনেক ভালো বিকল্প। এটি অনেকগুলি বিভিন্ন তারিখ এবং সময় ফর্ম্যাটগুলি পার্স করতে পারে।
বিকল্প বিকল্পটি mmin
হ'ল:
find . -name "*.txt" -mmin -0.5
# Finds files modified within the last 0.5 minute, i.e. last 30 seconds
এই বিকল্পটি সমস্ত find
সংস্করণের জন্য কাজ না করে ।
আপনি যদি ফাইলগুলিতে পরিবর্তনগুলির জন্য কোনও ডিরেক্টরি নিরীক্ষণ করেন তবে আপনি সম্ভবত কিছু অসীম পোলিং লুপের পরিবর্তে ইনোটাইফাই-সরঞ্জামগুলি ব্যবহার করতে চান ।
find: missing argument to `-mtime'
। তবে আমি -mmin এবং দশমিক যুক্তি ব্যবহার করে পছন্দসই আচরণ পেতে পারি।s
আর্গুমেন্ট হিসাবে ব্যবহার করার জন্য আমি ম্যানপেজে কোনও রেফারেন্স পাইনি ।