Как обернуть возвращаемые строки command1 одинарными / двойными кавычками (\'или \") для подачи в следующую команду2?

Например, я хочу использовать mplayer для воспроизведения музыки нескольких папок, наберите в bash, например:

$ find './l_music/La Scala Concert 03 03 03' './l_music/Echoes Коллекция Эйнауди' './l_music/Ludovico Einaudi - Концерт Королевского Альберт-Холла [2 CD] (2010)' -name '*.mp3' | xargs mplayer

Ну, вы знаете, путь возврата команды find, в котором каталог и файл всегда имеют место, команда mplayer для правильного канала не принимает эти пути mp3.

Я думаю, что если обернуть строки поиска возврата одинарными / двойными кавычками (\'или \") для подачи в mplayer, проблема будет решена.

Но как я могу решить эту проблему, просто используйте команду bash, не используйте bash или perl-скрипты, в то время как можете дать мне одну команду perl-строки, используя параметры командной строки Perl.

1 ответ

Решение

Использовать -print0 опция в find, которая разделяет имена файлов, используя нулевой символ вместо пробела.

В xargs используют -0 что говорит о том, что имена файлов, которые он получит в качестве входных данных, разделены нулями.

Ваша примерная команда становится:

find './l_music/La Scala Concert 03 03 03' './l_music/Echoes The Einaudi Collection' './l_music/Ludovico Einaudi - The Royal Albert Hall Concert [2 CD] (2010)' -name '*.mp3' -print0 | xargs -0 mplayer

См. Также: Как я могу обрабатывать пробелы в именах файлов при использовании xargs при поиске результатов?

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