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

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

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

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

4
задан 9 June 2012 в 20:19

17 ответов

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/' {} +
6
ответ дан 25 July 2018 в 18:35

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/' {} +
6
ответ дан 31 July 2018 в 12:55

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/' {} +
6
ответ дан 2 August 2018 в 00:45

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/' {} +
6
ответ дан 4 August 2018 в 16:15

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/' {} +
6
ответ дан 6 August 2018 в 00:54

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/' {} +
6
ответ дан 7 August 2018 в 18:19

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/' {} +
6
ответ дан 10 August 2018 в 07:03

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/' {} +
6
ответ дан 15 August 2018 в 19:01

Тип обычно, но положите a \ после слова и перед пространством.

i.e. [F1]

-2
ответ дан 25 May 2018 в 10:25
  • 1
    Мне нужен какой-то вариант, чтобы дать мне это: найти вариант: media / media1 / HDTV / Band \ of \ Brothers / Season \ 1 / ... – papampi 9 June 2012 в 17:06

Тип обычно, но положите a \nосле слова и перед пробелом.

i.e. cd ~/home/New\ Volume/movies/new\ stuff

-2
ответ дан 25 July 2018 в 18:35

Тип обычно, но положите a \nосле слова и перед пробелом.

i.e. cd ~/home/New\ Volume/movies/new\ stuff

-2
ответ дан 31 July 2018 в 12:55

Тип обычно, но положите a \nосле слова и перед пробелом.

i.e. cd ~/home/New\ Volume/movies/new\ stuff

-2
ответ дан 2 August 2018 в 00:45

Тип обычно, но положите a \nосле слова и перед пробелом.

i.e. cd ~/home/New\ Volume/movies/new\ stuff

-2
ответ дан 4 August 2018 в 16:15

Тип обычно, но положите a \nосле слова и перед пробелом.

i.e. cd ~/home/New\ Volume/movies/new\ stuff

-2
ответ дан 6 August 2018 в 00:54

Тип обычно, но положите a \nосле слова и перед пробелом.

i.e. cd ~/home/New\ Volume/movies/new\ stuff

-2
ответ дан 7 August 2018 в 18:19

Тип обычно, но положите a \nосле слова и перед пробелом.

i.e. cd ~/home/New\ Volume/movies/new\ stuff

-2
ответ дан 10 August 2018 в 07:03

Тип обычно, но положите a \nосле слова и перед пробелом.

i.e. cd ~/home/New\ Volume/movies/new\ stuff

-2
ответ дан 15 August 2018 в 19:01
  • 1
    Мне нужен какой-то вариант, чтобы дать мне это: найти вариант: media / media1 / HDTV / Band \ of \ Brothers / Season \ 1 / ... – papampi 9 June 2012 в 17:06

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

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