GNU/Linux >> Znalost Linux >  >> Linux

Změřte místo na disku určitých typů souborů souhrnně

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


Toto bude hlásit využití místa na disku v bajtech podle přípony:

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

Výstup:

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

Jednoduché:

du -ch *.txt

Pokud chcete, aby se zobrazilo celkové zabrané místo, pak:

du -ch *.txt | tail -1

Zde je způsob, jak to udělat (v Linuxu pomocí GNU coreutils du a syntaxe Bash), vyhýbání se špatným praktikám:

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

Pokud chcete vyloučit aktuální adresář, použijte -mindepth 2 s find .

Další verze, která nevyžaduje syntaxi Bash:

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

Všimněte si, že tyto nebudou správně fungovat s názvy souborů, které obsahují nové řádky (ale ty s mezerami budou fungovat).


Linux
  1. Použijte df ke kontrole volného místa na disku v Linuxu

  2. Zkontrolujte použité místo na disku v systému Linux pomocí du

  3. Snížením IO disku pro zvýšení výkonu

  1. sys/types.h:Žádný takový soubor nebo adresář

  2. Jak vymazat volné místo na disku v Linuxu?

  3. mazání souborů, ale místo na disku je stále plné

  1. Rsync dva typy souborů v jednom příkazu?

  2. Jak tarovat určité typy souborů ve všech podadresářích?

  3. Jak okamžitě zaplnit/spotřebovat spoustu místa na disku?