मैं लिनक्स पर एक निश्चित तारीख से अधिक फ़ाइलों को कैसे हटा सकता हूं


4

कभी-कभी मैं एक संग्रह को गलत फ़ोल्डर में निकालता हूं और नई निकाली गई फ़ाइलों को स्थानांतरित या हटाना चाहता हूं।

कमांड लाइन के माध्यम से ऐसा करने का सबसे आसान तरीका क्या है? क्या मैं किसी तरह सभी फाइलों को खोज सकता हूं जो निष्कर्षण समय की तुलना में नए हैं और आरएम में पाइप हैं?

धन्यवाद

जवाबों:


12

संपादित करें: जैसा कि टिप्पणियों में उल्लेख किया गया है, tarसंग्रह में तारीखों से मिलान करने के लिए निकाले गए फ़ाइलों के माइम और समय को संशोधित करता है, इसलिए यह पहली विधि तब तक काम नहीं करेगी जब तक -mकि निष्कर्षण के दौरान ध्वज का उपयोग नहीं किया गया था। अंतिम विधि इष्टतम है, लेकिन फाइल फ़ाइल को हटाने के परिणामस्वरूप आप चाहें तो फ़ाइलनाम टकरा सकते हैं।

findएक -newer fileध्वज का समर्थन करता है , यह निर्दिष्ट करता है कि इसे फ़ाइल की तुलना में नई फ़ाइलें मिलनी चाहिए । touchफ़ाइल पर पहुँच को संशोधित / संशोधित करने के लिए एक -t तर्क है। तो लगभग 7:25:30 बजे हुई उफ़ को ठीक करने के लिए:

$ tar xzf whoops.tar.gz
$ touch -t 200909261925.30 whoops-timestamp
$ find . -newer whoops-timestamp

और अगर आप आश्वस्त हैं कि सही फ़ाइलें प्रदर्शित की गई हैं:

$ find . -newer whoops-timestamp -print0 | xargs -0 rm -v

वैकल्पिक रूप से आपके द्वारा निकाले गए संग्रह में सूचीबद्ध सभी फ़ाइलों को हटाना है:

$ tar tfz whoops.tar.gz | xargs rm -v

(+1) अंतिम विकल्प सबसे अच्छा है। यह ओपी के मन में जो था उससे कहीं ज्यादा सुरक्षित और अच्छा है।
नगुल

प्रश्न: मूल फ़ाइलों के संशोधित समय को टारगेट नहीं करेगा? तुलना के दौरान उस संशोधित समय (बनाम परिवर्तन समय?) का उपयोग नहीं मिलेगा?
ericslaw

धन्यवाद! मैंने इसे करने का आखिरी तरीका इस्तेमाल किया। संग्रह वास्तव में एक ज़िप था इसलिए मैंने zipinfo -1 blah.zip किया xargs rm -v
Tarski

@ericslaw Yup, यह मामला प्रतीत होता है। tarजब तक आप -mध्वज का उपयोग नहीं करेंगे तब तक अभिलेखागार से तारीखों को संरक्षित करेगा । इसलिए, पहला तरीका सामान्य नियम के रूप में काम नहीं करेगा।
बैकस्ट्रॉम सेप

2

खोजने के साथ एक और विकल्प:

$ find "/path/to_clean/" -type f -mtime +30 -print0 | xargs -0 rm -f

जहाँ +30 उन दिनों की संख्या है जहाँ आप रखना चाहते हैं।

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