bash, find, exec and echo

10
find . \
  -name 'user_prefs' \
  -exec echo "whitelist_from basheer@hydrofitgroup.com" >> {} \;'

我想在所有被find找到的文件中添加一行whitelist_from basheer@hydrofitgroup.com,但我的命令无法运行。它只会创建一个名为'{}'的文件。
我应该使用for命令吗?
谢谢!
2个回答

13

你必须对 '>>' 进行转义,例如像这样:

find . -name 'user_prefs' -exec sh -c 'echo "whitelist_from basheer@hydrofitgroup.com" >> {}' \;

1
这是一个正确的答案,但我不会完全称其为“转义”。 - Dennis Williamson

5

如前所述,建议使用xargs,但也可以通过以下方法避免多次执行sh:

find . -name 'user_prefs' | while read filename; do echo "whitelist_from basheer@hydrofitgroup.com" >>"$filename"; done

这比“xargs”版本要快得多。 - Dennis Williamson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接