Я хотел бы рассчитать размер файла дерева каталогов, но я также хочу игнорировать все PDF-файлы и изображения. По сути, я пытаюсь выяснить, каков размер текстовых файлов.
Как я могу это сделать?
Примечание: это в среде Linux, в частности RedHat
Я хотел бы рассчитать размер файла дерева каталогов, но я также хочу игнорировать все PDF-файлы и изображения. По сути, я пытаюсь выяснить, каков размер текстовых файлов.
Как я могу это сделать?
Примечание: это в среде Linux, в частности RedHat
Рассмотрим структуру каталогов следующим образом:
$ 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
где вы можете добавить -b
чтобы получить видимый размер в байтах, а не использование диска. -c
выдает общий итог.
Ограничения этого подхода:
find
+ du
)find
в du
через командную строку и, таким образом, ограничен максимально допустимым для этого размером.Вы можете преодолеть 1., используя find
для выполнения du
для каждого отдельного файла, а затем используйте awk
или что-то подобное, чтобы сложить все это. 2. может быть решена путем более интригующих проверок в find
, возможно, на основе вывода file
для каждого файла и сопоставления его с положительным или отрицательным списком.