मुझे एक स्क्रिप्ट बनाने की ज़रूरत है जो डॉक में डिफ़ॉल्ट डाउनलोड फ़ोल्डर के रूप में उसी क्रम में फ़ाइलों को दिखाती है, जिसे पहले दिनांक जोड़ा गया था, सबसे नया। मुझे विकल्प खोजने की जरूरत नहीं है ls
।
इसे करने का कोई और तरीका?
मुझे एक स्क्रिप्ट बनाने की ज़रूरत है जो डॉक में डिफ़ॉल्ट डाउनलोड फ़ोल्डर के रूप में उसी क्रम में फ़ाइलों को दिखाती है, जिसे पहले दिनांक जोड़ा गया था, सबसे नया। मुझे विकल्प खोजने की जरूरत नहीं है ls
।
इसे करने का कोई और तरीका?
जवाबों:
सरल (तेज़) समाधान:
mdls -name kMDItemFSName -name kMDItemDateAdded -raw * | \
xargs -0 -I {} echo {} | \
sed 'N;s/\n/ /' | \
sort
जोड़े गए दिनांक को मेटाडेटा आइटम के रूप में संग्रहीत किया जाता है kMDItemDateAdded
और mdls
कमांड प्रत्येक फ़ाइल के लिए डेटा को एक तर्क के रूप में पारित कर देगा।
तो, जो कुछ भी मनमाना क्रम में डाउनलोड किया जाता है उसमें सभी फाइलों के लिए जोड़ी गई तारीख को डंप करने के लिए * अपने शेल द्वारा विस्तारित किया जाता है, आप कर सकते हैं:
mdls -name kMDItemDateAdded ~ / डाउनलोड / *
आपको ढूंढने और sed / awk / perl / जो कुछ भी प्रतिस्थापन के लिए इकट्ठा करना है, के कुछ संयोजन को एक साथ हैक करने की आवश्यकता होगी, ls
लेकिन शायद mdfind को आपकी स्क्रिप्ट द्वारा ls
उस आउटपुट को पुन: स्थापित करने और पार्स करने की बजाय कॉल किया जा सकता है ।
खैर, हमेशा की तरह, प्रश्न लिखने के बाद मैं मेटाडाटा सामग्री के लिए फाइलों में खोदना शुरू करता हूं, और यह लिखना समाप्त कर रहा हूं:
ls -a | \
grep -v '^\.$\|^\.\.$' | \
xargs -I {} mdls -name kMDItemFSName -name kMDItemDateAdded {} | \
sed 'N;s/\n//' | grep -v '(null)' | \
awk '{print $3 " " $4 " " substr($0,index($0,$7))}' | \
sort -r
मूल रूप से यह: 1. सभी फाइलों को सूचीबद्ध करें 2. फ़िल्टर करें। और .. 3. नाम और तारीख को जोड़ा जाता है, एक के बाद एक लाइन 4। हर दो लाइनों को 1 लाइन में मर्ज करता है। दिनांक, समय और नाम को निकालता है 6. इसे उल्टा करता है (चूंकि डेटाइम अपफ्रंट है, यह इसके अनुसार होता है) दिनांक और समय)
आशा है कि यह किसी और की मदद करता है! :)
@bmike ने वास्तव में, साइट ने मुझे मेरे प्रश्न को पोस्ट करने के 8 घंटे के बाद ही मेरी प्रतिष्ठा की कमी के कारण अपने स्वयं के प्रश्न का उत्तर देने के लिए प्रतिबंध लगाया: डी
ls -A
बजाय -a
आप की जरूरत नहीं है तो grep -v
के लिए .
और ..
।
आदमी एल.एस.
-U Use time of file creation, instead of last modification for sorting (-t) or long output (-l).