我有以下问题。 有一个文件,其中包含FS的某些路径/文件。 这些由于某种原因确实包括整个范围的特殊字符,如空格,单/双引号,甚至有时是版权ASCII。
我需要运行文件的每一行并将其传递给另一个命令。
到目前为止我尝试的是:
<input_file xargs -I % command %
直到我从xargs
收到此消息后才开始工作xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option
但是我们这个选项对我来说根本不起作用
xargs: argument line too long
是否有人使用特殊字符可以正常工作的解决方案。 不必与xargs一起使用,但我需要将该行传递给命令。
非常感谢提前。
答案 0 :(得分:1)
您应该将文件名与\0
NULL字符分开进行处理。
可以使用
完成find . <args> -print0 | xargs -0
或者如果您必须使用文件名处理文件,请将&#39; \ n`更改为&#39; \ 0&#39;,例如
tr '\n' '\0' < filename | xargs -0 -n1 -I% echo "==%=="
-n 1
说,
-n max-args 每个命令行最多使用max-args参数。
您应该使用"%"
引号括起%