学习bash:在文件列表中附加一行

时间:2012-04-03 07:23:25

标签: linux bash shell unix sh

我有一个文件列表,我想在文件的末尾添加一行。我找不到正确的方法:

find . | grep filexxx | xargs << echo "attribute=0000"

不幸的是,似乎没有用。没有编写脚本,哪个oneliner命令会这样做?

谢谢!

3 个答案:

答案 0 :(得分:8)

您可以使用find的选项:-exec,如下所示:

find . -type f -name "file*" -exec bash -c 'echo "your line" >> $1' -- {} \;

您需要更改文件*以匹配您要查找的文件。

还有另一种可能性:

find . -type f | while read file; do echo "your line" >> $file ; done

您可以在上面的

中找到grep或使用-name

编辑:

根据knittl在评论中的建议,如果您的文件名包含新行字符,则会遇到上述一行内容的问题..以及Gordon提供的解决方案:

find . -type f -print0 | while IFS= read -r -d '' file; do ...

答案 1 :(得分:6)

或使用简单的循环:

for f in *txt; do echo "yada" >> "${f}"; done

答案 2 :(得分:0)

有很多方法可以做到这一点。明智的回答是一个。这是另一个,也许更直观,即使它产生了更多的过程:

for fname in $(find . | grep filexxx) ; do echo "attribute=0000" >> $fname ; done