जवाबों:
मुझे लगता है मैं find dirname -not -empty -ls
GNU लगता है, का उपयोग करेंगे ।
ls
और आपने इस्तेमाल किया find
?) हालांकि मैंने इसे छोड़ दिया ... यह एक उचित समाधान है
इस के लिए एक नौकरी है खोजने ls शक्तिशाली पर्याप्त नहीं है।
find -maxdepth 1 -size +0 -print
-maxdepth 1
- यह बताता है कि केवल वर्तमान डायर की खोज करें, सभी सब डायर में देखने के लिए निकालें या संख्या को नीचे 2, 3 या अधिक स्तरों पर जाने के लिए बदलें।
-size +0
यह 0
बाइट्स की तुलना में बड़े आकार वाली फ़ाइलों की तलाश के लिए कहता है । 0
आप चाहते हैं कि किसी भी आकार में बदला जा सकता है।
-print
बताती है कि वह जिस फ़ाइल को ढूंढती है उसका पूरा रास्ता प्रिंट कर ले
संपादित करें:
देर से जोड़: आपको शायद -type f
ऊपर का स्विच भी जोड़ना चाहिए । यह बताता है कि फाइल्स को केवल फाइल्स ढूंढना है। और जैसा कि नीचे टिप्पणी में कहा गया है, -print
स्विच की वास्तव में आवश्यकता नहीं है।
-maxdepth 1
पहले जगह देनी चाहिए -size +0
। -print
डिफ़ॉल्ट क्रिया भी है, इसलिए इसकी आवश्यकता नहीं है।
find
क्या वैध विकल्प हैं और वे कहां जा सकते हैं, इसके संदर्भ में बहुत भिन्नता के कार्यान्वयन । यदि आप पहले डालते हैं तो GNU find
(जो सामान्य रूप से सामान्य है) एक चेतावनी का उत्पादन करेगा । -size
-maxdepth
फ़ाइलों को फ़िल्टर करने के लिए Ls के पास लगभग कोई विकल्प नहीं है: यह इसका काम नहीं है। फ़ाइलों को फ़िल्टर करना सरल मामलों (ग्लोबिंग के माध्यम से) के लिए शेल का काम है और जटिल मामलों के लिए खोज का काम है।
Zsh में, आप ग्लोबिंग L
क्वालिफायर को केवल उन्हीं फाइलों को बनाए रखने के लिए रख सकते हैं जिनका आकार> 0 है ( .
क्वालीफायर नियमित फाइलों तक सीमित है):
ls *(.L+0)
अन्य गोले के उपयोगकर्ताओं को खोजने का उपयोग करना चाहिए। GNU खोज के साथ (जैसा कि ज्यादातर लिनक्स पर पाया जाता है):
find -maxdepth 1 -type f ! -empty -exec ls {} +
POSIX- संगत तरीका है:
find . -type f -size +0c -exec ls {} + -o -name . -o -prune
यदि ls
केवल एक उदाहरण नहीं था और आप केवल दृश्य निरीक्षण का इरादा रखते थे, तो आप आकार के आधार पर छाँट सकते थे ls -S
:।