所以我试图输出一个文件列表,这些文件将通过管道传输到另一个命令中,但需要对这些空间进行转义。我到目前为止:
find ./ | grep ".mkv$" | awk '{ print "\"" $0 "\"" }'
其中输出的内容如下:
"/dir/File One.mkv"
"/dir/File Two.mkv"
"/File Three blah blah.mkv"
但我需要输出:
"/dir/File\ One.mkv"
"/dir/File\ Two.mkv"
"/File\ Three\ blah\ blah.mkv"
我可以添加一个简单的命令/正则表达式吗?
答案 0 :(得分:2)
使用sed替换空格前的一些反斜杠
<强>命令强>
find ./ | grep ".mkv$" | awk '{ print "\"" $0 "\"" }' | sed 's/ /\\ /g'
<强>输出强>
"./dir/File\ Two.mkv"
"./dir/File\ One.mkv"
"./File\ Three\ blah\ blah.mkv"
答案 1 :(得分:2)
此处您不需要grep
,awk
等。只需使用-name
参数找到所需的文件,并可选择使用sed
来转义空格:
find . -name '*.mkv' -printf "'%p'\n" | sed 's/[[:space:]]/\\&/g'
'./dir/File\ One.mkv'
'./dir/File\ Two.mkv'
'./File\ Three\ blah\ blah.mkv'