Например, я хочу использовать mplayer для воспроизведения музыки нескольких каталогов, введите в bash вот так:
$ find './l_music/La Scala Concert 03 03 03' './l_music/Echoes The Einaudi Collection' './l_music/Лудовико Эйнауди - концерт в Королевском Альберт-Холле [2 CD] (2010)' -name '*. mp3 '| xargs mplayer
Ну, вы знаете, путь возврата команды find, в каком каталоге и файле всегда есть пространство, команда mplayer справа по каналу не принимает эти пути mp3.
Я думаю, что если заключить строки возврата find в одинарные / двойные кавычки (\ 'или \ ") для передачи в mplayer, проблема будет решена.
Но как я могу решить эту проблему, просто используйте команду bash, не используйте сценарии bash или perl, а можете дать мне одну команду строки perl с использованием параметров командной строки Perl.
Использовать -print0
вариант в найти который разделит имена файлов с помощью нулевого символа вместо пробела.
В 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 для результатов поиска?