我正在寻找一个工具/ shell命令来编辑多个文件。我的确切用例是递归搜索具有特定名称的配置文件,并为其添加新的配置行。
重述:
我在几个目录中有一堆配置:
For ex:
/Users/myth/app1/config/a.cfg
/Users/myth/app1/config/b.cfg
/Users/myth/app2/config/a.cfg
/Users/myth/app2/config/b.cfg
/Users/myth/app3/config/a.cfg
/Users/myth/app3/config/b.cfg
/Users/myth/app4/config/a.cfg
/Users/myth/app4/config/b.cfg
我必须在所有应用的a.cfg中插入一行配置。我可以找到find . -name "a.cfg"
的所有配置。现在,我将如何将其传输到类似echo或tee的东西,只需在所有a.cfg的最后一行附加一行配置?我不能为这些应用程序使用共享的a.cfg,因为a.cfg的内容对于所有应用程序都不相同。但是我想添加的这条线是一样的。
更新 这就是我最终使用的:
for configFile in $(find /Users/myth -type f -name "a.cfg" | xargs grep -iL "new config")
do
echo "new config" >> $configFile
done
答案 0 :(得分:0)
echo >> `find /start/directory -name "a.cfg"`
Echo应该添加一个新行,添加到find命令列出的路径列表中。 Backtick首先确定命令的“正确”部分。