【发布时间】:2012-04-03 07:23:24
【问题描述】:
我有一个文件列表,我想在文件末尾添加一行。我找不到正确的方法:
find . | grep filexxx | xargs << echo "attribute=0000"
不幸的是,这似乎不起作用。不写脚本,哪个oneliner命令能做到?
谢谢!
【问题讨论】:
我有一个文件列表,我想在文件末尾添加一行。我找不到正确的方法:
find . | grep filexxx | xargs << echo "attribute=0000"
不幸的是,这似乎不起作用。不写脚本,哪个oneliner命令能做到?
谢谢!
【问题讨论】:
你可以像这样使用 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
编辑:
根据 cmets 中 knittl 的建议,如果您的文件名包含换行符,则上述一行将出现问题.. 以及 Gordon 提供的解决方案:
find . -type f -print0 | while IFS= read -r -d '' file; do ...
【讨论】:
find|while 会导致问题。
find . -type f -print0 | while IFS= read -r -d '' file; do ...。
或者使用一个简单的循环:
for f in *txt; do echo "yada" >> "${f}"; done
【讨论】:
${f}。
while read 示例实际上更适合正确处理文件中的空格。
有很多方法可以做到这一点。 wisent 的答案是之一。这是另一个,也许更直观,即使它产生更多进程:
for fname in $(find . | grep filexxx) ; do echo "attribute=0000" >> $fname ; done
【讨论】: