如何包装command1返回带有单引号(\或\“)的string以供给下一个command2?

例如,我想用mplayer来播放几个dirs的音乐,在bash中这样打字:

$ find'./l_music/La Scala Concert 03 03 03''./l_music/Echoes The Einaudi Collection''./l_music/Ludovico Einaudi – 皇家阿尔伯特音乐厅音乐会[2 CD](2010)'-name'*。 mp3'| xargs mplayer

那么,你知道,查找命令返回path,哪个目录和文件总是有空间,pipe道右命令mplayer不接受这些MP3path。

我认为如果用单/双引号(\或者\“)来包装查找返回string以提供给mplayer,则问题将得到解决。

但是我该怎么办才能解决这个问题,只用bash命令,不要用bash或者perl脚本,同时可以给我一个perl命令,使用perl命令行选项。

-print0中使用-print0选项,它将使用空字符而不是空格来分隔文件名。

xargs中使用-0来告诉它,它将作为input接收的文件名被空值分开。

您的示例命令然后变成:

 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时,如何处理文件名中的空格?