web-dev-qa-db-ja.com

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 :/data/codeのすべてのjarファイルをリストして削除する必要があります

4
Heisenberg

実行中:

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
5
heemayl