* nixディレクトリとサブディレクトリのすべての.javaファイルの前にライセンスファイルを追加したいとします。私は正常に動作するようです。このソリューションを、持っている:シェルリダイレクトが奇妙な動作をする理由
$ cat muppet-license.txt
// LICENSE: // Manuh-manuh
$ for file in `find . -iname "*.java"`; do
cat muppet-license.txt "$file" > "$file.out";
mv "$file.out" "$file";
done
私の質問は、なぜ次のfind呼び出しでは動作しません、次のとおりです。
find . -iname "*.java" -exec sh -c 'cat muppet-license.txt "$1" > "$1"' -- {} \;
これは持っていることを見つけることで見つかった非常に最初のファイルを引き起こしその上に "muppet license"が繰り返し追加されました。ファイルは停止せずに継続的に増加するようです。
ここでの違いを引き起こす原因を説明できる人はいますか? $ 1という名前のファイルを変更して再帰的検索の一部として再検索するのは何か?誰もが使用するアルゴリズムの詳細への良い参照を持っていますか?
私はそれを得る。それは私が尋ねたqではありません。あなたはそれを正しく読みましたか? – kittylyst
私が(そして他の人たちが)答えたことを誤解したか、質問を明確にするために編集する必要があります。意味をより明確にするために、私の反応を少し編集しました。 –