$(basename {})
スニペットは、前にシェルによって解析されfind
実行されます。結果は{}
です。そのため、2つのコマンドは同じです。
望みどおりに機能させるに$()
は、独自に処理する別のシェルを作成します。で引用すると''
、外部シェルの処理が妨げられます$()
。
find -name "*pdf" -exec sh -c 'echo $(basename "$1")' sh {} \;
注:この回答の最初のバージョンが使用されましたsh -c 'echo $(basename {})'
。これは間違っています。この他の回答をご覧ください。