ls -R /home/ABC/testDir/ | grep -F .java |
while read f; do find . -iname "$(basename $f)"; done
${f##*/}
ベース名の代わりに使用することもできます。または;
find /home/ABC/testDir -iname '*.java*' |
while read f; do find . -iname "${f##*/}"; done
ls
間違いなく、ファイル名の空白が問題を引き起こすと主張して、ファイル名の区切り文字としてヌルバイトを使用せずに or find の出力を解析することに反対する人が多いことに注意してください。それらの人々は通常、ファイル名の改行を無視し、彼らの異論は無視しても問題ありません。(ファイル名に空白を許可しない限り、つまり!)
より良いオプションは次のとおりです。
find /home/ABC/testDir -iname '*.java' -exec find . -iname {}
xargs が機能しない理由は、find 内で -iname に 2 つの引数を渡すことができないためです。