我有一个目录里面有多个文本文件。最后我想要添加一个字符串。
例如:目录中的文本文件列表。
- a.txt
- b.txt
- c.txt
获取它们路径的命令:
find -name "*txt"
然后我尝试发送
'echo "example text" > <filename>
所以我尝试运行以下内容:
find -name "*txt" | xargs echo "example_text" >>
这条命令失败了。
我想偶尔追加一些文本到文件中,由于文件名经常变化,所以我想使用xargs。
xargs
是一个可执行文件。>>
是一个 shell 指令。Shell 指令在可执行文件运行之前被处理。 - Charles Duffyfind | xargs
存在严重的潜在安全漏洞,除非您在find
端使用-print0
并在 xargs 端使用-0
:因为当没有使用-0
或 GNU 扩展-d
时,xargs 在不使用 shell 的输入解析时会出现问题,但是find
不会为该解析编写转义输出,因此生成恶意文件名的人可以注入任意名称。 - Charles Duffyfind . -name
而不是find -name
更具可移植性(适用于非GNU版本的find
);省略告诉find
从哪里开始搜索的参数的能力是一个非标准扩展。 - Charles Duffy