2014-12-16 2 views
1

Я использую команду du, чтобы получить размер каталога:Использования «его» для Общего размера файла некоторых типов файлов

du /tmp/dir1 

Это произвели общий размер файлов:

7 /tmp/dir1 

Который я затем разбираю и использую детали.

Эта папка заполнена .txt и txr. Меня интересует только общий размер файлов *.txt.

Есть ли способ, которым я могу официтить команду du для создания одиночного вывода только размера файлов *.txt?

ответ

2

Передайте список файлов команде du. Например:

du -s /tmp/dir1/*.txt 

Возможное решение, чтобы получить только общий размер, чтобы получить последнюю строку вывода du «s, как:

du -c /tmp/dir1/*.txt | tail -1 
+1

Потенциальная проблема заключается в том, что это сломается, если каталог содержит слишком много файлов (то есть дольше ARG_MAX); что может быть не так, но я научился (трудный путь) не полагаться на оболочку globbing для таких вещей ... – Carpetsmoker

+1

Это хорошо, но я ищу один вывод строки, это будет список каждый файл '.txt' и его размер, я хотел бы получить общее количество. –

+0

, если вы хотите просто использовать только: du -cs /tmp/dir1/*.txt – drizzt

2

du не имеет легкий способ фильтровать выход; но мы можем использовать find с stat, чтобы получить размер файла, а затем awk подвести итог:

$ find /tmp/dir1 -name '*.txt' -exec stat -c %s {} + | awk '{s+=$1} END {print s}' 

Примечание это будет работать только на системах Linux/GNU, из-за несовместимости stat аргументов.

+0

Хорошее решение, мне нравится ваше мышление. К сожалению, это не работало в моей конкретной системе. –

+1

@DustinCook Вот почему следует упомянуть вашу среду в вопросе :-) UNIX (-like) sytems не всегда очень портативны, к сожалению ... – Carpetsmoker

+0

Поверьте мне, вы бы не хотели знать !!! –

1

Используйте --exclude вариант:

du --exclude '*.krt' /tmp/dir1 
+0

Спасибо за это, мне нравится решение, и я обязательно буду использовать его в будущем. –

0

Вы также можете проверить размер директорий и файлов с помощью следующей команды.

Перейдите к пути (/TMP/dir1) du -sh * или du -sh /tmp/dir1

  • ами представляет собой сумму каталогов.
  • h представляет собой читаемый человеком формат.