Відповіді:
Розглянемо структуру каталогів таким чином:
$ ls -sR1
.:
total 32
4 1/
4 2/
4 m
4 n
4 o
4 x.pdf
4 y.pdf
4 z.pdf
./1:
total 0
./2:
total 8
4 a/
4 p
./2/a:
total 4
4 q
Потім, щоб отримати список всіх файлів, які не збігаються *.pdf
, ми можемо зробити
$ find . -type f \( ! -name '*.pdf' \)
чиє розширення також не відповідає, скажімо, *.jpg
це досить очевидно. Потім використовуйте du
наступним чином:
$ du -c $(find . -type f \( ! -name '*.pdf' \))
4 ./o
4 ./m
4 ./n
4 ./2/a/q
4 ./2/p
20 total
де ви захочете викинути a -b
щоб отримати видимий розмір у байтах, а не на диску. -c
видає загальну суму.
Обмеженням цього підходу є:
find
+ du
) find
в du
через командний рядок і, таким чином, обмежена максимально допустимим розміром для цього. Ви можете подолати 1. за допомогою find
виконати du
на кожному окремому файлі, а потім використовувати awk
або щось подібне, щоб додати все це. 2. може бути вирішена більш інтригуючими перевірками в Росії find
, можливо, виходячи з результату file
для кожного файлу і узгодження його з позитивним або негативним списком.