Im जून, जुलाई और अगस्त महीनों में बनाई गई फ़ाइलों की खोज करने की कोशिश कर रहा हूं। मैंने इस विधि का उपयोग किया
ls -lrth|awk '/[Jun][Jul][Aug]/ {print}'
लेकिन यह काम नहीं कर रहा है।
Im जून, जुलाई और अगस्त महीनों में बनाई गई फ़ाइलों की खोज करने की कोशिश कर रहा हूं। मैंने इस विधि का उपयोग किया
ls -lrth|awk '/[Jun][Jul][Aug]/ {print}'
लेकिन यह काम नहीं कर रहा है।
जवाबों:
आप कई पैटर्न पर मेल कर सकते हैं जैसे:
awk '/Jun/ || /July/ || /Aug/' <(ls -lrh)
यह जून, जुलाई, या अगस्त के लिए सभी मैचों को लौटाता है। आपको print
कथन की आवश्यकता नहीं है क्योंकि यह awk
डिफ़ॉल्ट क्रिया है।
awk '/Jun|Jul|Aug/'
याawk '/Ju[nl]|Aug/'
एक सामान्य नियम के रूप में, ls के आउटपुट को पार्स करना बहुत बुरा विचार है । आप जो चाहते हैं वह करने का एक बेहतर तरीका है
stat -c "%n %y" * | grep 2013-0[678]
वैकल्पिक रूप से, केवल उस अंतिम केस की जांच करें, जिसमें उस असंभावित मामले से बचाव के लिए जहां फ़ाइल का नाम ही एक तारीख है:
stat -c "%n %y" *| awk '$NF ~ /2013-0[678]/'
से man stat
:
-c --format=FORMAT
use the specified FORMAT instead of the default; output a new‐
line after each use of FORMAT
%y time of last modification, human-readable
%n file name
| awk '$NF ~ /2013-0[678]/'
अंतिम आउटपुट फ़ील्ड की जाँच करने के लिए ... (असंभावित?) यहां तक कि उस फ़ाइल का नाम regex से मेल खाता हो, जब दिनांक नहीं है।
ls
एक मानव पठनीय में फ़ाइलों के बारे में जानकारी प्रदर्शित करने के लिए एक आदेश है। लिपियों में इसका प्रयोग न करें ।
एक निर्देशिका ट्री में फ़ाइलें खोजने के लिए कमांड कुछ मापदंड से मेल खाती है find
। यदि आपके पास जीएनयू (यानी गैर-एम्बेडेड लिनक्स या सिगविन) या फ्रीबीएसडी (यानी फ्रीबीएसडी या ओएसएक्स) है, तो आप उन -newermt
फाइलों से मिलान करने के लिए उपयोग कर सकते हैं जो एक निश्चित तिथि के बाद अंतिम रूप से संशोधित किए गए थे।
find . -newermt '1 June' ! -newermt '1 September' -print
यदि आप स्क्रिप्ट चलाना चाहते हैं, तो कैलेंडर वर्ष के बजाय किसी विशिष्ट वर्ष में फ़ाइलों का मिलान करना चाहते हैं तो एक वर्ष जोड़ें।
यदि आपका खोज कार्यान्वयन नहीं है -newermt
, तो आपको इसके साथ करना होगा -newer
, जो उस फ़ाइल की तिथि की तुलना करता है जो find
एक निश्चित फ़ाइल के साथ मिली है। का उपयोग touch
तारीख है कि आप एक सीमा के रूप में उपयोग करना चाहते हैं के साथ अस्थायी फ़ाइलों को बनाने के लिए।
dir=$(mktemp -d)
touch -d 201306010000 "$dir/from"
touch -d 201309010000 "$dir/to"
find . -newer "$dir/from" ! -newer "$dir/to" -print
rm -r "$dir"
[...]
निर्माण एक एकल चरित्र से मेल खाता है, जो कि कोष्ठक के बीच के पात्रों में से कोई भी हो सकता है। आपकी अभिव्यक्ति से मेल खाता है तोJJA
याJug
(J
से[Jun]
,u
से[Jul]
, औरg
से[Aug]
महीने के संक्षिप्त रूपों आप मैच के लिए उम्मीद कर रहे थे), लेकिन नहीं।