Как показать только общий размер файла конкретного расширения командой 'du'

Да, однако, часть стандарта (но не обязательно) файлы системного значения по умолчанию не будет присутствовать. И необходимо будет удостовериться, что $PATH указывает на оболочку.

11
11.11.2014, 00:30
2 ответа

с GNU du (т.е. на не встроенном Linux или Cygwin) вы можете использовать опцию - исключить , чтобы исключить файлы, которые вы понимаете хочу совпадать.

du -s --exclude='*.html' /var/foo

Если вы хотите положительно совпадать *. PDF Файлы, вам нужно использовать какой-либо другой метод для перечисления файлов, а DU , по крайней мере, отобразится одна линия вывода на Аргумент, плюс Grand Total с вариантом -C . Вы можете позвонить хвостом , чтобы удалить все, кроме последней строки, или SED, чтобы удалить слово «всего». Чтобы перечислить файлы в том, что один каталог, используйте подстановочные знаки в оболочке.

du -sc /var/foo/*.pdf | tail -n1
du -sc /var/foo/*.pdf | sed -n '$s/\t.*//p'

Если вам нужно также проходить файлы в подкаталогах, используйте Найти или использовать ** / , если ваша оболочка поддерживает это. Для ** / ** / , в Bash, первый запуск ShopT -S Extlob , и обратите внимание, что версии Bash до 4,2 будут проходить символические ссылки на каталоги; В ZSH это работает из коробки.

du -sc /var/foo/**/*.pdf | tail -n1

Дополнительное осложнение с помощью версии находки заключается в том, что если будет слишком много файлов, FACE будет работать du , более одного раза, чтобы поддержаться под пределами длины длины командной строки. С помощью метода WildCard вы получите ошибку, если это произойдет (превышено превышение длины строки командной строки). Следующий код предполагает, что у вас нет совпадающего имени файла, содержащего новую строку.

find /var/foo -name '*.pdf' -exec du -sc {} + |
awk '$2 == "total" {total += $1} END {print total}'
10
27.01.2020, 19:58

Вы можете позволить оболочке расширить файлы:

$ mkdir foo
$ echo "abc" > foo/1.pdf
$ echo "abcd" > foo/2.pdf
$ echo "abcd" > foo/3.html
$ du -ch foo/*.pdf
4,0K    foo/1.pdf
4,0K    foo/2.pdf
8,0K    total

Однако, как вы видите, этот интерфейс вводит файлы примерно в 1000 раз больше, чем только что созданный. Лучше всего использовать опцию -b:

$ du -cbh foo/*.pdf
4   foo/1.pdf
5   foo/2.pdf
9   total

Большие файлы все равно будут отображаться в удобочитаемом виде, например 173K.

3
27.01.2020, 19:58

Теги

Похожие вопросы