.git ディレクトリをスキップしながら、フォルダー (およびそのサブフォルダー) 内の各ファイルに固定文字列を追加しようとしています。
私はこのようなことがうまくいくと思っていました
find . -type f ! -path "./.git/*" -exec "echo \"hello world\" >> {}" \;
追加のエコーで実行すると、正しく見えるコマンドが生成されます
bash> find . -type f ! -path "./.git/*" -exec echo "echo \"hello world\" >> {}" \;
echo "hello world" >> ./foo.txt
echo "hello world" >> ./bar.txt
...
これらのコマンドは、シェルから直接実行すると必要なことを実行しますが、find から実行すると、次のようになります。
bash> find . -type f ! -path "./.git/*" -exec "echo \"hello world\" >> {}" \;
find: echo "hello world" >> ./foo.txt: No such file or directory
find: echo "hello world" >> ./bar.txt: No such file or directory
...
しかし、ディレクトリをリストすると次のようになるため、これらのファイルは存在します。
bash> ls
bar.txt baz.txt foo.txt subfolder/
必要なものを引用していないと思いますが、考えられることはすべて試しました(二重引用符と一重引用符、内側の引用符をエスケープする場合とエスケープしない場合など...)。
私のコマンドの何が問題なのか、ファイルに固定文字列を追加する方法を誰かが説明できますか?