केवल दो फ़ाइलों के साथ आकार प्राप्त करना


51

मैं डु कमांड का उपयोग करके अपने उपनिर्देशिकाओं में सभी फाइलों और सभी फाइलों का आकार कैसे प्राप्त कर सकता हूं।

मैं सभी फ़ाइलों का आकार पाने के लिए निम्न कमांड का प्रयास कर रहा हूं (और उपनिर्देशिकाओं में फाइलें)

find . -type f | du -a

लेकिन यह फ़ोल्डर के आकार को भी प्रिंट करता है। मैं उपनिर्देशिकाओं में सभी फ़ाइलों और फ़ाइलों के आकारों की सूची कैसे प्राप्त कर सकता हूं? मैं भी करने की कोशिश की exec flag, लेकिन मैं नहीं यकीन है कि कैसे पाइप के लिए एक और आदेश में उत्पादन यह के परिणामों को निष्पादित करता है के बाद कर रहा हूँ findमें du

ऑपरेटिंग सिस्टम AIX 6.1 ksh शेल के साथ है।

जवाबों:


57

मैं आमतौर पर -execउपयोगिता का उपयोग करता हूं । ऐशे ही:

find . -type f -exec du -a {} +

मैंने इसे GNU खोज के साथ बैश और ksh दोनों पर आजमाया। मैंने कभी AIX की कोशिश नहीं की, लेकिन मुझे यकीन है कि आपके खोज के संस्करण में कुछ -execसिंटैक्स है।

निम्नलिखित स्निपेट सूची को क्रमबद्ध करता है, सबसे पहले:

find . -type f -exec du -a {} + | sort -n -r | less

3
यदि आपके पास find -print0या अन्य GNU सुविधाओं तक पहुँच नहीं है, तो मैं इस उत्तर के साथ जाऊँगा । यदि उपलब्ध है, के \;साथ प्रतिस्थापित करने के \+परिणामस्वरूप कम चालान होंगे duऔर इस प्रकार बेहतर प्रदर्शन होगा।
jw013

धन्यवाद, यह विशेष रूप से महान काम करता है क्योंकि डु विभिन्न इकाइयों में आकार के लिए एक झंडा प्रदान करता है।
शार्दुल उपाध्याय

मुझे +विकल्प पर जानकारी नहीं मिली । क्या यह विकल्प है duया नहीं find? और इसका परिणाम कम कॉल में क्यों होता है?
एमिलियो वाज़केज़-रीना

1
यह एक मानक विकल्प है find। यह केवल एक बार exec(हमारे मामले में du) कमांड को निर्दिष्ट करता है , कमांड के findक्रमिक तर्कों के रूप में दिए गए सभी परिणामों के साथ ।
रहमू

wtf, क्यों वहाँ एक आदेश की तरह नहीं हैdu -f --threshold=1G
अलेक्जेंडर मिल्स

16

यदि आपके पास GNU उपयोगिताओं हैं, तो प्रयास करें

find . -type f -print0 | du --files0-from=-

आदेश यह कहते हुए विफल हो रहा है कि Print0 एक मान्य कमांड नहीं है और यह अंतिम ऋण मान्यता प्राप्त ध्वज नहीं था। मुझे नहीं लगता कि यह दृष्टिकोण काम करेगा क्योंकि man duकोई सूची filesया fromध्वज नहीं है।
शार्दुल उपाध्याय

आपको अपने ऑपरेटिंग सिस्टम को सवाल के टैग के रूप में जोड़ना चाहिए। मैंने मान लिया कि आपके पास जीएनयू है लेकिन इसका उल्लेख करना भूल गया।
20

1
मुझ पर एक उत्थान है! आपके विशेष समाधान के साथ du -chमिलान करने वाली फ़ाइलों का एक शानदार कुल प्राप्त करने के लिए काम करता है :find . -name 'blah blah.*' -print0 | du --files0-from=- -ch
माइकल गोल्डस्मीन

9

मैं आम तौर पर उपयोग करता हूं:

find . -type f -print0 | xargs -r0 du -a

Xargs आमतौर पर कमांड को कॉल करता है, भले ही कोई तर्क पारित न हो; xargs du </dev/nullअभी भी बुलाया xargs -r du </dev/nullजाएगा , डु कॉल नहीं करेगा। -0न्यू लाइन के बजाय अशक्त-समाप्त तार के लिए तर्क दिखता समाप्त हो गया।

फिर मैं आमतौर | awk '{sum+=$1} END {print sum}'पर कुल प्राप्त करने के लिए अंत में जोड़ता हूं ।


2
then I usually addसोने की :-) के लायक है
राडेक

2

यहां लंबे पैरामीटर नाम और मानव छँटाई के साथ एक संस्करण है।

find . -type f -exec du --human {} + | sort --human --reverse | head

मैंने यह भी देखा कि पास होने की कोई जरूरत नहीं -a/--allहै du


-2

वर्तमान dir में विशिष्ट फाइलें

du -ch files*

छोटा है और मेरे लिए काम करता है

du -sh .

वर्तमान dir और उप में सभी फ़ाइलों के लिए

डु (जीएनयू कोरुटिल्स) 8.30


1
(१) आपका क्या मतलब है du -ch files*? मान लीजिए वर्तमान निर्देशिका में शामिल है ant, apple, banana, bat, cat, corn, date, और dog, जहां जानवरों के नाम उपनिर्देशिका कर रहे हैं और फल / सब्जी के नाम फ़ाइलें हैं - क्या आदेश तुम सिर्फ फ़ाइलें प्राप्त करने का प्रयोग करेंगे? या यह है कि आप क्या मतलब नहीं था? (2)  du -sh .वर्तमान निर्देशिका में और उसके भीतर केवल सभी चीजों का एक भव्य कुल रिपोर्ट करेगा, न कि फाइलों को। यह प्रश्न के लिए पूछे गए सवाल के बिल्कुल विपरीत है।
जी-मैन का कहना है कि 'मोनिका'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.