كيف يمكنني العثور على حجم بعض الملفات المحددة؟
سؤال
يحاول الأمر تلخيص الأحجام:
find . -iname "*.dmg" -exec du -sh '{}' \; 3&> /dev/null |
awk '{print $1}' | summming_up_program???
هل يمكنك العثور على حل أبسط؟
حل أوبونتو. شكرا على نهاية awk لأيمن.
find . -iname "*.dmg" -printf '%b\n' |
awk 'BEGIN { s = 0 } {s += $1 } END { print "%dMB", s / 2^20 }'
المحلول
find . -iname '*.dmg' -exec stat -f '%z' '{}' \; |
awk 'BEGIN { s = 0 } {s += $1 } END { print s }'
stat
يستخدم للحصول على حجم الملف. awk
يستخدم لتلخيص جميع أحجام الملفات.
يحرر:
حل لا شوكة stat
:
find . -iname '*.dmg' -ls |
awk 'BEGIN { s = 0 } {s += $7 } END { print s }'
نصائح أخرى
wc -c *.pyc | tail -n1 | cut -f 1 -d ' '
قد يكون أسرع ثم cat'ing الملفات من خلال الأنبوب. wc -c
لا تحسب البايتات، فإنه يسترجع الحجم من INODE ... أو HDD الخاص بي لديه سرعة قراءة من 717 جيجابايت / ثانية :-)
$ time wc -c very-big.pcap
5394513291 very-big.pcap
real 0m0.007s
user 0m0.000s
sys 0m0.000s
القط * .dmg | مرحاض -
Cat نسخ جميع الملفات إلى Stdout، وتعتبر مرحاض حجم ما تم إلقاؤه. لا شيء يحصل مكتوب على القرص.
ليس فعالا، ولكن حتى أستطيع أن أفهم ذلك :)
قيادة أيمن المحسنة غير المفرطة:
find . -iname '*.dmg' -ls 3&> /dev/null |
awk 'BEGIN { s = 0 } {s += $7 } END { print "%dGB", s / 2^30 }'
بفضل أيمن لتصحيح ردي الأولي.
لا تنتمي إلى StackOverflow