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