Как обернуть возвращаемые строки 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 при поиске результатов?