$ 0 से कम आकार की सभी फ़ाइलों के नाम प्रिंट करने के लिए:
find "$dir" -size 0
ध्यान दें कि सभी कार्यान्वयन find
डिफ़ॉल्ट रूप से उत्पादन नहीं करेंगे, इसलिए आपको ऐसा करने की आवश्यकता हो सकती है:
find "$dir" -size 0 -print
प्रश्न में अंतिम लूप पर दो टिप्पणियाँ:
एक स्ट्रिंग में हर दूसरे शब्द पर पुनरावृत्ति करने के बजाय और यह देखें कि क्या वैकल्पिक मान शून्य हैं, आप लाइनों पर पुनरावृति करके व्हाट्सएप के साथ होने वाली समस्या को आंशिक रूप से समाप्त कर सकते हैं। उदाहरण के लिए:
printf '1 f1\n0 f 2\n10 f3\n' | while read size path; do
test "$size" -eq 0 && echo "$path"; done
ध्यान दें कि यह आपके मामले में विफल हो जाएगा यदि ls द्वारा किसी भी पथ आउटपुट में newlines होते हैं, और यह 2 बिंदुओं को पुष्ट करता है: पार्स न करें ls
, और एक ऐसा नामकरण नीति है जो पथों में व्हाट्सएप की अनुमति नहीं देती है।
दूसरे, लूप से डेटा को आउटपुट करने के लिए, आउटपुट को केवल एक चर में स्टोर करने की आवश्यकता नहीं echo
है। यदि आप बस लूप को स्टडआउट करने के लिए अपना आउटपुट लिखते हैं, तो आप एक ही बात को पूरा करते हैं लेकिन इसे स्टोर करने से बचें।
man find
।