向所有找到的文件添加一行

向所有找到的文件添加一行

我原来的工作目录层次结构:

$ find
.
./usr1
./usr1/.vimrc
./usr2
./usr2/.vimrc

我想在所有内容中添加一行——“设置编号”.vimrc文件。所以我运行了这个命令:

find -name ".vimrc" -exec echo "set number" >> {} \;

但是,所有.vimrc文件保持不变,并且有一个新创建的{}我的工作目录中的文件:

$ find
.
./usr1
./usr1/.vimrc
./{}
./usr2
./usr2/.vimrc

怎么了?我怎样才能正确地做到这一点?

答案1

如果你想重定向命令的输出-exec,最好执行shell命令;根据您的情况尝试以下语法:

find -name ".vimrc" -exec sh -c 'echo "set number" >> {}' \;

这将按预期工作。

相关内容