Bash Скрипт не возвращает правильный размер файла - PullRequest
1 голос
/ 05 февраля 2020

У меня есть небольшой фрагмент моего bash скрипта, который я хотел бы сделать следующим образом:

  • Получить список файлов в каталоге / test / f1 с именем файла "test_ * .txt "
  • Рассчитать общий размер всех этих файлов
  • Распечатать размер на экране

Мой текущий скрипт такой:

folder="/test/f1/"
files=$(find $folder -type f -name "test_*.txt")
size=$(du -ch $files | tail -1 | cut -f 1)
echo $size

Это очень хорошо работает, когда находит файлы. Однако когда в каталоге нет тестовых _ *. Txt файлов, я хочу, чтобы он печатал 0 МБ или 0 КБ. В настоящее время печатается несколько сотен кб.

Я могу убедиться, что файлы (рассчитанные в строке 2) пусты, если в каталоге / test / f1 / нет ни одного из этих тестовых _ *. Txt файлов. Тем не менее, строка 3 по-прежнему устанавливает размер в несколько сотен килобайт.

Почему это происходит? Почему в этом случае не отображается 0?

Спасибо

1 Ответ

0 голосов
/ 05 февраля 2020

Вы можете вызвать du без каких-либо файлов, в этом случае он будет работать с текущим каталогом (рекурсивно). Поэтому, если вы вызываете du -ch $files и $files пусто, вы получите в итоге вывод du -ch .

Обратите внимание, что du по умолчанию рекурсивно работает с каталогами.

...