基本上我想要在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"
答案 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