本质上,我希望在此问题中执行逆操作。
我正在运行搜索,寻找具有Windows行末尾的文件(rn
),因为我想删除它们。
$ grep -URl ^M .
一些返回的文件的名称中有空格:
./file name 1.txt
./file name 2.txt
为了通过xargs
将其传递给另一个工具,我需要引用这些行。如何改用此输出:
"./file name 1.txt"
"./file name 2.txt"
BSD grep
提供了一个--null
选项,以打印名称,然后是null字节(而不是newline)。
GNU grep
提供了具有相同语义的-Z
或--null
选项。
BSD和GNU xargs
采用-0
选项,以指示文件名被null字节分开。
因此:
grep -URl --null ^M . | xargs -0 ...
为了避免空间问题,我将新的行字符用作XARGS的分隔符,带有-d选项:
xargs -d 'n' ...
所以我的解决方案是:
grep -URl ^M . | xargs -d 'n' rm