फ़ाइल आकार के आधार पर फ़िल्टर ls आउटपुट


5

मैं lsफ़ाइल आकार के आधार पर कमांड के आउटपुट को फ़िल्टर करना चाहता हूं । आउटपुट में 100KB से अधिक किसी भी .jpg या .png फ़ाइलों की सूचना दी जानी चाहिए।

मैं .png / .jpg फ़ाइलों को फ़िल्टर करने में सक्षम हूं, लेकिन मैं 100KB से छोटी किसी भी फ़ाइल को छोड़ने में सक्षम नहीं हूं।

यहाँ मैं वर्तमान में उपयोग कर रहा हूँ:

ls -lah | grep '.png\|.jpg'

किसी भी विचार मैं यह कैसे कर सकते हैं?

जवाबों:


2

जैसा कि दूसरों ने सुझाव दिया है, findआपको निर्दिष्ट आकार श्रेणियों में फाइलें खोजने की अनुमति देगा। Findहालांकि, प्रत्येक फ़ाइल के लिए पथ आउटपुट। इसके अलावा, आगे की योग्यता के बिना, findवर्तमान निर्देशिका में और वर्तमान निर्देशिका के नीचे हर निर्देशिका में सभी फाइलें मिलेंगी। निम्नलिखित केवल वर्तमान निर्देशिका खोजता है और lsपरिणामों को फैलाने के लिए उपयोग करता है।

find . -maxdepth 1 -size +200 \( -name \*.png -o -name \*.jpg \) -print | xargs ls -ldh

ध्यान दें कि आकार ब्लॉकों में है, जहां एक ब्लॉक अक्सर होता है यदि हमेशा 512 बाइट्स न हो।


आपको यह उल्लेख करना चाहिए कि इस काम के लिए 'ls' के पास '-d' ध्वज होना चाहिए। 'ls -lh' अनफ़िल्टर्ड आउटपुट दिखाएगा।
सीएसचॉल

@cschol: इसका कारण उत्पादन में किसी भी निर्देशिका की सामग्री को सूचीबद्ध -dकरने से रोकना lsहै find
गैरीजोन

4

आप इसका उपयोग कर सकते हैं find:

find . -type f -size +100k | grep '.png\|.jpg'

जहां +100kKB में आकार निर्दिष्ट किया गया है, जिसका अर्थ है कि केवल इससे बड़ी फाइलें आउटपुट होनी चाहिए। findकुछ अन्य अच्छे विकल्प भी हैं, उदाहरण के लिए केवल उन फाइलों को सूचीबद्ध करना जो एक निश्चित समय पहले बनाई गई थीं। man findअधिक जानकारी के लिए देखें।

ऊपर के रूप में भी फिर से लिखा जा सकता है

find . -type f -size +100k -name "*.png" -o -name "*.jpg"


0

डु का उपयोग करना

du -a --apparent-size -t +100k | grep '.png\|.jpg'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.