find コマンドで -exec{}ls を使用すると、権限が拒否されました。

find コマンドで -exec{}ls を使用すると、権限が拒否されました。

次のコマンドを実行すると、permission deniedすべてのファイルに関するメッセージが表示されます。

find /data/code/ -name "*.jar" -exec {} ls \;


find: `/data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar': Permission denied

しかし、私がそうするなら

ls  /data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar

メッセージなしで正しい出力を提供して印刷されますpermission denied

/data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jar

私は何が間違っていましたか?

ps:すべてのjarファイルをリストして削除する必要があります。/data/code

ベストアンサー1

それをしながら:

find /data/code/ -name "*.jar" -exec {} ls \;

見つかったファイル(例:)を引数/data/code/project/shared/build/thirdparty/log4j-1.2.8/commons-logging-1.0.4.jarとして実行しようとしたため、権限拒否エラーが発生しました。ls

順序を変更してください。

find /data/code/ -name "*.jar" -exec ls {} \;

GNUにはオプションもfindあるので-ls、GNUでは次のfindことができます。

find /data/code/ -name "*.jar" -ls

おすすめ記事