Find

將 -exec {} ls 與 find 命令一起使用時權限被拒絕

  • August 24, 2021

執行以下命令時,它會給我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.jarls作為它的參數,導致權限被拒絕錯誤。

只需切換順序:

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

GNUfind也有-ls選項,所以在 GNU 中find,你可以這樣做:

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

引用自:https://unix.stackexchange.com/questions/288089