विशेष तिथियों के बीच संशोधित फ़ाइलों को कैसे निकालें?


12

विषय के रूप में: मैं एक निर्देशिका में फ़ाइलों को निकालना चाहूंगा जिन्हें किसी विशेष तिथि सीमा में संशोधित किया गया है। मैं यह कैसे कर सकता हूँ ?

जवाबों:


18

कमांड GNU findजाने का रास्ता है। उदाहरण के लिए, 1 और 5 अगस्त के बीच वर्तमान निर्देशिका की सभी फ़ाइलों को हटाने के लिए, आप निम्न कमांड का उपयोग कर सकते हैं

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete

-deleteकार्रवाई के बिना कमांड को निष्पादित करना बेहतर है , पहले, इच्छुक फ़ाइलों की लिस्टिंग देखने के लिए (एक अच्छा विकल्प यह हो सकता है -lsकि एलएस जैसी लिस्टिंग का उत्पादन करें)।

-maxdepth 1विनिर्देश को हटाने से सभी उपनिर्देशिकाएं भी पार हो जाएंगी।

आप उदाहरण के लिए, घंटे भी निर्दिष्ट कर सकते हैं

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete

एकल उद्धरणों को न हटाने की चेतावनी दें, जो कि दिनांक और समय के बीच रिक्त स्थान की रक्षा करते हैं।

चरित्र !एक नकार है, इसे पढ़ा जाना चाहिए: नया कि यह तारीख लेकिन नया नहीं कि यह दूसरी तारीख।


जवाब के लिए धन्यवाद। क्या मैं घंटों की रेंज चुनने के लिए कुछ का उपयोग कर सकता हूं? और 'क्या है!' के लिए इस्तेमाल होता है ?
पेट्रीक

!एक नहीं है। इस उदाहरण में: 2011-08-06 की तुलना में नया नहीं है।
con-f-use

@lordmonkey: उत्तर में मेरा संपादन देखें
enzotib

3
+1। मुझे पता नहीं था-विधेय की भविष्यवाणी करें। शायद इसकी जरूरत नहीं है, लेकिन मैं जोड़ूंगा -type f
मिशैल errajer

@ मिशैल errajer: के लिए अच्छा सुझाव है -type f, मुझे लगता है कि भूल जाते हैं। -deleteएक जीएनयू एक्सटेंशन है, मुझे लगता है।
enzotib
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.