Saya ingin menemukan serangkaian file (berdasarkan ekspresi wildcard) dan total penggunaan disk mereka.
Sesuatu seperti ini:
$ find . -name 'flibble*' -ctime +90 -exec du -sh {} \;
2.1G ./flibble_116.log
2.1G ./flibble_83.log
2.1G ./flibble_211040_157.log
2.1G ./flibble3747_51.log
Pekerjaan ini. Tapi itu tidak membuahkan hasil yang saya cari. Ini daftar ruang yang digunakan oleh setiap file, seperti find
iterasi melalui mereka.
Yang saya inginkan adalah total du
untuk semua file yang ditemukan.
du(1)
juga mendukung membaca nama file dari file:find 1 2 3 -maxdepth 0 -print0 > filenames; du -shc --files0-from=filenames
.Coba ini:
Perintah aslinya adalah memberikan du satu argumen, kemudian mengeksekusinya, sampai melewati semua argumen. Dengan cara ini, Anda cukup memberikan semua argumen sekaligus, kemudian memotong ukuran yang terpisah, dan hanya menyisakan total. Anda dapat menghapus pipa dan ekor untuk menunjukkan ukuran setiap file jika Anda mau.
sumber
-exec du -c {} +
opsifind
, yang akan melewatkan nama path yang tidak diubahdu
.Anda dapat mencoba ini:
sumber
Saya akan
find
mencetak sendiri ukurannya, dan menggunakan alat lain untuk menghitung total:Jika Anda juga ingin melihat nama file:
sumber
Satu liner yang bekerja untuk mendapatkan total Gigabyte pada sebagian besar sistem:
echo "$ ((($ (temukan. -nama 'flibble *' -time +90 -type f -printf '% k +') 0) / 1024/1024)) GB"
sumber