将 -exec {} ls 与 find 命令一起使用时权限被拒绝

将 -exec {} ls 与 find 命令一起使用时权限被拒绝

运行以下命令时,它会向我提供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

相关内容