例如我想用 mplayer 播放几个目录的音乐,在 bash 中输入如下内容:
$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' | xargs mplayer
嗯,您知道,find 命令返回路径,其中目录和文件总是有空格,管道右命令 mplayer 不接受那些 mp3 路径。
我认为如果将 find 返回的字符串用单/双引号 (\'或\") 括起来并传递给 mplayer,问题就会得到解决。
但是我该如何解决问题,只使用 bash 命令,不要使用 bash 或 perl 脚本,同时可以给我一个 perl 行命令使用 Perl 命令行选项。
答案1
使用-print0
选项寻找它将使用空字符而不是空格来分隔文件名。
在参数使用-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