У меня есть сотни PDF-файлов и HTML-файлов в каталоге. И я хочу знать общий размер PDF-файлов.
По команде du -ch /var/foo
я вижу общий размер файла, но мне нужна только последняя строка, общий размер.
Если каталог содержит только PDF-файлы, я могу использовать -s
параметр, но этот параметр нельзя использовать на этот раз.
Как я могу получить только общий размер файла определенного типа?
shell
wildcards
disk-usage
Ironsand
источник
источник
du -sh /foo/*.pdf
?du -ch /var/foo/*.pdf | tail -n 1
Ответы:
В GNU
du
(то есть в не встроенном Linux или Cygwin) вы можете использовать эту--exclude
опцию, чтобы исключить файлы, которые вы не хотите сопоставлять.Если вы хотите точно сопоставить
*.pdf
файлы, вам нужно будет использовать какой-то другой метод дляdu
вывода списка файлов, и он будет отображать по крайней мере одну строку для каждого аргумента плюс итоговую сумму с параметром-c
. Вы можете позвонить,tail
чтобы удалить все, кроме последней строки, или sed, чтобы удалить слово «итого». Чтобы перечислить файлы в этом каталоге, используйте подстановочные знаки в оболочке.Если вам также необходимо просмотреть файлы в подкаталогах, используйте
find
или используйте**/
шаблон, если ваша оболочка это поддерживает. В**/
bash сначала запуститеshopt -s extglob
и обратите внимание, что версии bash до 4.2 будут проходить символические ссылки на каталоги; в zsh это работает из коробки.Дополнительным осложнением для версии find является то, что если файлов слишком много, они
find
будут запускатьсяdu
более одного раза, чтобы не превышать ограничение длины командной строки. При использовании подстановочного метода вы получите ошибку, если это произойдет («превышен предел длины командной строки»). Следующий код предполагает, что у вас нет подходящего имени файла, содержащего символ новой строки.источник
--exclude='*.html'
может привести/var/foo/dir.html/foo.pdf
к тому, что исключения не будут учитываться, поскольку исключения также влияют/var/foo
Вы можете позволить оболочке расширять файлы:
Однако, как вы можете видеть, это указывает на то, что размеры файлов примерно 1000 раз только что созданы. Лучшим вариантом является использование
-b
параметра:Большие размеры файлов по-прежнему будут отображаться в удобочитаемой форме, например
173K
.источник
du
показывает использование диска каждым файлом (в большинстве файловых систем это размер файла, округленный до следующего кратного размеру блока). С опцией-b
,du
показывает размер каждого файла.