如何用bash中的引号包装输出行?

时间:2014-01-18 21:35:56

标签: bash command-line

基本上我想要在this question中执行逆操作。

我正在运行搜索,查找具有Windows行结尾(\r\n)的文件,因为我想要remove them

$ grep -URl ^M .

某些返回的文件名称中包含空格:

./file name 1.txt
./file name 2.txt

为了通过xargs将其传递给另一个工具,我需要引用这些行。我怎样才能转换为此输出:

"./file name 1.txt"
"./file name 2.txt"

2 个答案:

答案 0 :(得分:6)

BSD grep提供--null选项来打印名称,后跟空字节(而不是换行符)。

GNU grep提供具有相同语义的-Z--null选项。

BSD和GNU xargs都使用-0选项来指示文件名以空字节分隔。

因此:

grep -URl --null ^M . | xargs -0 ...

答案 1 :(得分:1)

为了避免空间问题,我使用新行字符作为带有-d选项的xargs的分隔符:

xargs -d '\n' ...

所以我的解决方案是:

grep -URl ^M . | xargs -d '\n' rm