Как использовать find при наличии пробелов в именах каталогов?

Мне нужно найти все .nfo файлы в моем медиа-каталоге, чтобы я мог использовать sed для изменения некоторых частей. Проблема в том, что в моих папках есть пробелы в именах.

find  /media/media1/HDTV -name  \*.nfo -type f 
media/media1/HDTV/Band of Brothers/Season 1/
…

Выходной файл не найден командой sed для изменения нужных мне строк.

5
задан 9 June 2012 в 19:19

2 ответа

find не заботятся о специальных символах в именах файлов, но программа, которая анализирует вывод find, может. Если вы используете xargs, используйте опцию -print0 для find, а опцию -0 для xargs. Это говорит find и xargs использовать нулевые символы (которые не могут появляться в именах файлов) в качестве разделителя между именами файлов, а xargs не делать никакого другого анализа, который бы искажал имена файлов, содержащие пробелы.

find /media/media1/HDTV -name '*.nfo' -type f -print0 |
xargs -0 sed -i 's/pattern/replacement/'

Другой способ вызвать команду для многих файлов - это использовать только find.

find /media/media1/HDTV -name '*.nfo' -type f -exec sed -i 's/pattern/replacement/' {} +
0
ответ дан 9 June 2012 в 19:19

Печатайте как обычно, но ставьте \ после слова и перед пробелом.

то есть. cd ~/home/New\ Volume/movies/new\ stuff

0
ответ дан 9 June 2012 в 19:19

Другие вопросы по тегам:

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