1

Я измеряю общий размер группы файлов, пути которых я сохранил в текстовом документе files.txt. Пример содержимого файла files.txt:

file1.txt
file2.txt
file3.txt

Эта команда оболочки дает мне вывод, который я хочу:

$ du -hc $(cat files.txt)

если у меня нет имени файла с пробелами, например: file 9.txt Затем du -hc пытается проанализировать имя файла в пробеле . Неважно, куда я помещаю цитаты, в файле files.txt или в моей команде оболочки, он все равно анализируется неправильно. Что мне делать вместо этого?

К вашему сведению, мой документ со списком файлов является выводом команды вроде так:

find ~/Dropbox/ -type f -iname "*.BMP" >> bmpfound.txt

Детали моей системы: MacOS, используя oh-my-zsh в Terminal.app

1 ответ1

1

Используйте опцию -print0 в find и xargs -0:

find ~/Dropbox/ -type f -iname "*.BMP" -print0 | xargs -0 du -ch

В качестве альтернативы, как отметил Гордон Дэвиссон, это можно упростить:

find ~/Dropbox/ -type f -iname "*.BMP" -exec du -ch {} +

Любой из них должен работать с именами файлов, которые содержат пробелы, или любой другой тип глупых символов.

Я не уверен, что вы хотели намеренно перенаправить вывод команды find в файл, а не отправлять его по трубопроводу, но если вы действительно хотите сохранить список файлов, вы можете сделать это вместо этого:

xargs -0 du -ch < bmpfound.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .