आज की तारीख में फ़ाइलों को हटाने / हटाने के लिए UNIX कमांड


2

मैं उस निर्देशिका में सभी फ़ाइलों को हटाना चाहता हूं जिसमें मैं आज हूं।

इसलिए अगर आज 3 अप्रैल है तो UNIX कमोड मैं कुछ File2, someFile3, someFile4 और someFile5 को हटाने के लिए कह रहा हूं। यह कमांड कुछ नहीं हटाएगा।

someUser@:/someDirectory$ ls -lrt
-rw-r--r--    1 someUser someUser       4242 Mar 30 12:12 someFile1.dat
-rw-r--r--    1 someUser someUser          0 Apr 03 12:12 someFile2.dat
-rw-r--r--    1 someUser someUser   42424242 Apr 03 12:12 someFile3.dat
-rw-r--r--    1 someUser someUser          0 Apr 03 12:12 someFile4.dat
-rw-r--r--    1 someUser someUser     424242 Apr 03 12:12 someFile5.dat

मेरा OS AIX है

वर्तमान में, मैं इसे प्राप्त करने के लिए नीचे और ऊपर चार कमांड चला रहा हूं और इसमें बहुत समय लगता है क्योंकि मैं परीक्षण कर रहा हूं और इस फाइलों को अक्सर हटाने की आवश्यकता होती है। फ़ाइल नाम हमेशा अलग होते हैं (टाइमस्टैम्प का उपयोग वास्तविक फ़ाइल नामों में किया जाता है)

rm someFile2.dat
rm someFile3.dat
rm someFile4.dat
rm someFile5.dat

आपको Unix.SE
वॉरेन

जवाबों:


1

इस प्रश्न का उत्तर देने में आप दो अलग-अलग तरीके अपना सकते हैं:

  • आप कहते हैं कि फ़ाइल नामों में टाइमस्टैम्प है। आप वाइल्डकार्ड और टाइमस्टैम्प के संयोजन का उपयोग करके निर्देशिका से फ़ाइलें निकाल सकते हैं: $ TODAYDATE=`date '+%Y%m%d'` $ rm *${TODAYDATE}.dat

  • आप विकल्प के findसाथ उपयोग कर सकते हैं -newer(आपको नए विकल्प का उपयोग करना होगा, क्योंकि AIX में बिल्ट-इन findविकल्प नहीं हैं): सबसे पहले एक ऐसी फाइल बनाएं जिसमें शुरुआती समय है जब आप माइम के रूप में खोजना चाहते हैं: $ TODAYDATE=`date '+%Y%m%d'` $ touch -m -t "${TODAYDATE}0000" /tmp/time_marker फाइलें ढूंढें जो उस फ़ाइल से नए हैं $ find . -type f -newer /tmp/time_marker -exec rm {} \;

  • आप इसके सरल संस्करण का भी उपयोग कर सकते हैं find: $ find . -type f -ctime -1 -exec rm {} \;

यह पिछले 24 घंटों में बनी सभी फाइलों को ढूंढ लेगा। उपयोगी यदि आप प्रत्येक दिन 23:59 के आसपास क्रोन जॉब चलाते हैं। हालाँकि, यह आपके प्रश्न का सही उत्तर नहीं देता है।


1
यह मेरे व्यक्तिगत मामले में काम करेगा rm *20140403*लेकिन क्या होगा अगर फाइलनेम में टाइमस्टैम्प न हो? अगर कोई बेहतर जवाब नहीं आया तो मैं आपका जवाब स्वीकार करूंगा। धन्यवाद!
javaPlease42

ठीक है, आपने सवाल में कहा कि फाइलों में टाइमस्टैम्प होता है। दूसरी बुलेट में मैं समझाता हूं कि उन फाइलों को कैसे खोजा जाए जिनके नाम में टाइमस्टैम्प न हो।
एमटीके

0

यदि आप मशीन पर GNU खोजक का उपयोग कर सकते हैं तो वर्तमान निर्देशिका में फ़ाइलों को हटाने के लिए यह सबसे अच्छा विकल्प है:

find -maxdepth 1 -daystart -ctime 0 -type f -delete

यह आदेश आपको दिखाएगा कि क्या हटाया जाएगा:

find -depth -maxdepth 1 -daystart -ctime 0 -type f -exec ls -cld {} +

findAIX से कमांड तक सीमित होने के कारण आप पिछले 24 घंटों से आसानी से फ़ाइलों को हटा सकते हैं:

find -maxdepth 1 -ctime 0 -type f -exec rm {} \;

दुर्भाग्य से findAIX में उपयोगिता के पास -daystartविकल्प नहीं है जो वर्तमान समय के बजाय दिन की सीमा की तुलना में समय का कारण बनता है।

इसके अलावा वास्तव में समय इनोड संशोधन समय (निर्माण समय नहीं) है, लेकिन यह मानक UNIX फ़ाइल विशेषताओं में निर्माण समय का निकटतम औचित्य है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.