見つかったすべてのファイルに1行を追加する

見つかったすべてのファイルに1行を追加する

私の元の作業ディレクトリ階層は次のとおりです。

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

すべての項目に「設定番号」という1行を追加したいと思います。.vimrc文書。だから、次のコマンドを実行しました。

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

しかし、すべて.vimrcファイルは変更されずに新しく作成されました。{}私の作業ディレクトリにあるファイル:

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

何が問題なの?どうすれば正しくできますか?

答え1

コマンドの出力をリダイレクトするには、-exec状況に応じてシェルコマンドを実行することをお勧めします。

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

これは期待どおりに機能します。

関連情報