我想將許可文件添加到* nix目錄和任何子目錄中的每個.java文件的前面。我有這樣的解決方案,這似乎很好地工作:爲什麼shell重定向與find發生奇怪的交互
$ 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 . -iname "*.java" -exec sh -c 'cat muppet-license.txt "$1" > "$1"' -- {} \;
這將導致通過找到有找到的第一個文件「muppet許可證」反覆添加到它的前面 - 文件似乎不停地增長。
有人可以解釋是什麼造成了這裏的區別是?是否與修改名爲$ 1的文件有關,從而導致find將其重新找到作爲遞歸搜索的一部分?有沒有人有任何好的參考找到使用的算法的細節?
我明白了。這不是我問的問題。你有沒有正確閱讀? – kittylyst 2012-03-17 01:36:09
要麼你誤解了我(和其他人)的回答,要麼你需要編輯來澄清你的問題。稍微編輯我的迴應以更明確地表達意思。 – 2012-03-17 02:04:08