如何用单/双引号(“\'或\”)包裹命令 1 返回字符串以提供给下一个命令 2?

如何用单/双引号(“\'或\”)包裹命令 1 返回字符串以提供给下一个命令 2?

例如我想用 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

也可以看看:在查找结果中使用 xargs 时如何处理文件名中的空格?

相关内容