GNU/Linux >> Belajar Linux >  >> Linux

Ukur ruang disk dari jenis file tertentu secara agregat

find folder1 folder2 -iname '*.txt' -print0 | du --files0-from - -c -s | tail -1


Ini akan melaporkan penggunaan ruang disk dalam byte dengan ekstensi:

find . -type f -printf "%f %s\n" |
  awk '{
      PARTSCOUNT=split( $1, FILEPARTS, "." );
      EXTENSION=PARTSCOUNT == 1 ? "NULL" : FILEPARTS[PARTSCOUNT];
      FILETYPE_MAP[EXTENSION]+=$2
    }
   END {
     for( FILETYPE in FILETYPE_MAP ) {
       print FILETYPE_MAP[FILETYPE], FILETYPE;
      }
   }' | sort -n

Keluaran:

3250 png
30334451 mov
57725092729 m4a
69460813270 3gp
79456825676 mp3
131208301755 mp4

Sederhana:

du -ch *.txt

Jika Anda hanya ingin menampilkan total ruang yang digunakan, maka:

du -ch *.txt | tail -1

Inilah cara untuk melakukannya (di Linux, menggunakan GNU coreutils du dan sintaks Bash), menghindari praktik buruk:

total=0
while read -r line
do
    size=($line)
    (( total+=size ))
done < <( find . -iname "*.txt" -exec du -b {} + )
echo "$total"

Jika Anda ingin mengecualikan direktori saat ini, gunakan -mindepth 2 dengan find .

Versi lain yang tidak memerlukan sintaks Bash:

find . -iname "*.txt" -exec du -b {} + | awk '{total += $1} END {print total}'

Perhatikan bahwa ini tidak akan berfungsi dengan baik dengan nama file yang menyertakan baris baru (tetapi yang memiliki spasi akan berfungsi).


Linux
  1. Gunakan df untuk memeriksa ruang disk kosong di Linux

  2. Periksa ruang disk yang digunakan di Linux dengan du

  3. Bagaimana cara tar jenis file tertentu di semua subdirektori?

  1. Mengurangi Disk IO untuk Meningkatkan Performa

  2. Rsync Dua Jenis File Dalam Satu Perintah?

  3. sys/types.h:Tidak ada file atau direktori tersebut

  1. Bagaimana cara menghapus ruang disk kosong di Linux?

  2. menghapus file tetapi ruang disk masih penuh

  3. Cara untuk langsung mengisi/menggunakan banyak ruang disk?