Найти размер имен файлов с пробелом и дефисом | передать имена файлов, содержащие пробел и дефис, в «du» [дубликат]

0
10.06.2017, 01:58
2 ответа
xargs -Ifile du -sch file <filelist

Если ни одно имя файла не содержит символ новой строки, приведенный выше вызов будет вызывать du -sch для каждого имени в списке filelist. -Ifile заставит xargs заменить строку file в команде du -sch file на каждое имя, прочитанное из filelist .

Это позволит корректно обрабатывать имена файлов с пробелами и шаблонами подстановки оболочки (шаблоны не будут расширены).

1
28.01.2020, 02:45

Поскольку вы не заключили подстановку команд в кавычки, здесь происходит разделение слов в соответствии со значением IFS (пробел, табуляция, новая строка по умолчанию). У вас есть место в имени файла, поэтому, например./tmp-directory/connector_db_connector_db разбивается на два слова — /tmp-directory/connector_db_, connector_db.

Вы можете перебирать имена файлов одно за другим:

while IFS= read -r file; do du -sch -- "$file"; done <filelist

Поскольку ваш файл большой, это может занять некоторое время.

Кроме того, поскольку файлы анализируются по отдельности, у вас не будет общего размера, показанного du. Таким образом, вы можете удалить -s и -c:

while IFS= read -r file; do du -h -- "$file"; done <filelist
0
28.01.2020, 02:45

Теги

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