私の元の作業ディレクトリ階層は次のとおりです。
$ 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" >> {}' \;
これは期待どおりに機能します。