GNU/Linux >> Belajar Linux >  >> Linux

Dapatkan ukuran file total dari file yang berisi daftar file

Solusi 1:

Saya yakin hal seperti ini akan berhasil di busybox:

du `cat filelist.txt` | awk '{i+=$1} END {print i}'

Saya tidak memiliki lingkungan yang sama dengan Anda, tetapi jika Anda mengalami masalah dengan spasi dalam nama file, hal seperti ini juga akan berhasil:

cat filelist.txt | while read file;do
  du "$file"
done | awk '{i+=$1} END {print i}'

Edit 1 :
@stew tepat di posnya di bawah, du menunjukkan penggunaan disk dan bukan ukuran file yang tepat. Untuk mengubah perilaku busybox gunakan flag -a, jadi cobalah:du -a "$file" untuk ukuran file yang tepat dan bandingkan keluaran/perilaku.

Solusi 2:

du -c `cat filelist.txt` | tail -1 | cut -f 1

-c menambahkan baris "ukuran total";
tail -1 mengambil baris terakhir (dengan ukuran total);
cut -f 1 potong kata "total".

Solusi 3:

Saya tidak tahu apakah alat linux Anda mampu melakukan ini, tetapi:

cat /tmp/filelist.txt  |xargs -d \\n du -c

Lakukan, xargs akan menyetel pembatas menjadi karakter baris baru, dan du akan menghasilkan total keseluruhan untuk Anda.

Melihat 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.

Solusi 4:

while read filename ;  do stat -c '%s' $filename ; done < filelist.txt | awk '{total+=$1} END {print total}'

Ini mirip dengan solusi Mattias Ahnberg. Menggunakan "baca" mengatasi masalah dengan nama file/direktori dengan spasi. Saya menggunakan stat bukannya du untuk mendapatkan ukuran file. du mendapatkan jumlah ruang yang digunakannya 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 bloknya). Jadi untuk file 1 byte, stat mengatakan 1 byte dan du mengatakan 4k.

Solusi 5:

Berikut solusi lain untuk masalah ini:

cat filelist.txt | tr '\n' '\0' | wc -c --files0-from=-

Linux
  1. Bagaimana Cara Memindahkan 100 File Dari Folder Yang Berisi Ribuan?

  2. Script / Perintah Untuk Mendapatkan Ips Dari Daftar Nama Host Dan Menggabungkannya Menjadi Satu File?

  3. Dapatkan Daftar Semua File Dengan Mask Di Terminal?

  1. Bagaimana membedakan biner dari file teks di linux

  2. Ulangi daftar file dengan spasi

  3. Temukan ukuran total file yang tidak terikat atau tidak terlacak di git

  1. Kecualikan daftar file dari find

  2. Bagaimana cara mendaftar file yang baru dihapus dari direktori?

  3. bagaimana cara mendapatkan elemen dari daftar di bash?