Saya memiliki file yang berisi daftar file yang saya ingin tahu ukuran file total. Apakah ada perintah untuk melakukannya?
OS saya adalah linux yang sangat mendasar (Qnap TS-410).
EDIT:
Beberapa baris dari file:
/ share / arsip / Uji Bailey / BD006 / 0.tga
/ share / arsip / Bailey / BD007 / 1 versi 1.tga
/ share / arsip / Bailey 2 / BD007 / example.tga
Jawaban:
Saya yakin sesuatu seperti ini akan berfungsi di busybox:
Saya tidak memiliki lingkungan yang sama dengan Anda, tetapi jika Anda menemukan masalah dengan spasi dalam nama file, sesuatu seperti ini akan bekerja juga:
Sunting 1 :
@stew tepat di posnya di bawah ini, du menunjukkan penggunaan disk dan bukan ukuran file yang tepat. Untuk mengubah perilaku busybox menggunakan flag -a, jadi coba:
du -a "$file"
untuk ukuran file yang tepat dan bandingkan output / perilaku.sumber
/usr/bin/du: Argument list too long
(hampir 80.000 baris di file saya). Anda perintah kedua hanya memberi saya prompt setelah saya menekan enter, menunggu sesuatu yang lebih?cat tgafiles.txt | while read file;do du "$file" done | awk '{i+=$1} END {print i}'
. terima kasih mattiascat tgafiles.txt | while read file;do du "$file";done | awk '{i+=$1} END {print i}'
(yaitu sebelum dilakukan).-c
menambahkan garis "ukuran total";tail -1
mengambil baris terakhir (dengan ukuran total);cut -f 1
memotong kata "total".sumber
Saya tidak tahu apakah alat linux Anda mampu melakukan ini, tetapi:
Do, xargs akan menetapkan pembatas menjadi karakter baris baru, dan du akan menghasilkan total besar untuk Anda.
Melihat di http://busybox.net/downloads/BusyBox.html tampaknya "busybox du" akan mendukung opsi grand total, tetapi "busybox xargs" tidak akan mendukung pembatas khusus.
Sekali lagi, saya tidak yakin dengan perangkat Anda.
sumber
xargs: invalid option -- d
-c
karena xargs akan melakukan beberapa panggilan kedu
jika daftar file cukup panjang, menghasilkan beberapadu
total.Ini mirip dengan solusi Mattias Ahnberg. Menggunakan "read" mengatasi masalah dengan nama file / direktori dengan spasi. Saya menggunakan
stat
alih-alihdu
untuk mendapatkan filesize. du mendapatkan jumlah ruang yang digunakan pada disk alih-alih ukuran file, yang mungkin berbeda. Bergantung pada sistem file Anda, file 1 byte masih akan menempati 4k pada disk (atau apa pun ukuran blokasinya). Jadi untuk file 1 byte, stat mengatakan 1 byte dan du mengatakan 4k.sumber
stat
perintah:stat: command not found
stat: applet not found
dalam kasus iniInilah solusi lain untuk masalah ini:
sumber
du -bc
berjalan jauh lebih cepat.Coba sesuatu seperti ini:
Untuk menangani spasi di jalur dengan benar:
sumber
find
?find
bukanfind
biner nyata .cat docs.txt | xargs -d \\n du -sk | awk '{total+=$1} END{print total}'
sumber