सभी फ़ाइलों को प्राप्त करना जो एक विशिष्ट तिथि पर संशोधित किए गए हैं


20

क्या phpएक निश्चित निर्देशिका के भीतर सभी फाइलों को ढूंढना संभव है जिन्हें एक निश्चित तिथि पर संशोधित किया गया है

मैं उपयोग कर रहा हूँ

find /var/www/html/dir/ -mtime -28 | grep '\.php' 

पिछले 28 दिनों के भीतर फ़ाइलों को संशोधित करने के लिए, लेकिन मुझे केवल उन फ़ाइलों की आवश्यकता है जिन्हें निम्नलिखित तारीख में संशोधित किया गया है: 2011-02-08

जवाबों:


22

find(जैसे GNU 4.4.0) के हाल के संस्करणों पर आप -newermtविकल्प का उपयोग कर सकते हैं । उदाहरण के लिए, 2011-02-08 को संशोधित की गई सभी फाइलों को खोजने के लिए

$ find /var/www/html/dir/ -type f -name "*.php" -newermt 2011-02-08 ! -newermt 2011-02-09

यह भी ध्यान दें कि आपको php फ़ाइलों को खोजने के लिए grep में पाइप करने की आवश्यकता नहीं है क्योंकि खोज -nameविकल्प में आपके लिए ऐसा कर सकती है ।

अधिक सुझावों के लिए इस SO उत्तर पर एक नज़र डालें: किसी विशिष्ट तिथि पर बनाई गई फ़ाइलों की खोज करने के लिए 'खोज' का उपयोग कैसे करें?


4

अनायास, मानक के साथ कोई सीधा रास्ता नहीं है findfindजीएनयू सिस्टम के हाल के संस्करणों (जैसे गैर-एम्बेडेड लिनक्स, सिग्विन) और कुछ * बीएसडी में विकल्प हैं जैसे कि -newermtएक वर्तनी तिथि के साथ फ़ाइल तिथि की तुलना करना

मानक के साथ find, आप सभी कर सकते हैं फ़ाइल की तुलना वर्तमान तिथि ( -mtime) या एक निश्चित फ़ाइल के साथ की जाती है। वर्तमान तिथि आमतौर पर इस मामले में उपयोगी नहीं है (यह आपके द्वारा findकमांड चलाने के समय से वापस गिना जाता है , जबकि अधिकांश अनुप्रयोगों के लिए एक कैलेंडर तिथि की आवश्यकता होती है)। जो आपको एक सीमा को परिभाषित करने के लिए अस्थायी फ़ाइलों को बनाने के काम के साथ छोड़ देता है।

touch -t 201103070000 start.tmp
touch -t 201103080000 stop.tmp
find . -newer start.tmp \! -newer stop.tmp -print
rm start.tmp stop.tmp

2

आपके पास पहले से ही लगभग सही कमांड है, इसके संस्करणों के findलिए आप तारीखों का उपयोग नहीं करेंगे:

find /var/www/html/dir/ -mtime 27 | grep '\.php'

सामान्य तौर पर, के लिए find- n का अर्थ है से कम , n का अर्थ है बराबर , + n का अर्थ है "से अधिक"। पारंपरिक findमें कुछ अपवाद हैं, लेकिन जीएनयू findऔर अन्य नए संस्करणों जैसे कि बीएसडी / मैक ओएस एक्स ने इसे सही किया। (यदि आप कभी खुद को सोलारिस या अन्य वाणिज्यिक यूनिक्स प्रणाली पर पाते हैं तो इसे ध्यान में रखें।)


1

साथ zshआप इस्तेमाल कर सकते हैं समारोहage फ़ाइलों को किसी विशेष तिथि को संशोधित किया गया है का केवल नाम मुद्रित करने के लिए:

ऑटोलैड उम्र
प्रिंट-sur - * .php (.e: आयु 2011/02/08 :)

या, यदि आप पुनरावर्ती खोज करना चाहते हैं:

ऑटोलैड उम्र
Extendedglob को सेट करें
प्रिंट-sur - ** / *। php (.e: आयु 2011/02/08 :)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.