使用带有特殊字符的xargs

时间:2014-08-21 12:26:11

标签: linux bash xargs

我有以下问题。 有一个文件,其中包含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一起使用,但我需要将该行传递给命令。

非常感谢提前。

1 个答案:

答案 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参数。

您应该使用"%"引号括起%