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
在做的時候:
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