Find

遞歸查找執行檔

  • December 3, 2020

我有Test一個目錄,裡面有幾個目錄。兩者Test及其內部的目錄都有執行檔。我想用 列印它們ls。我會使用這個命令。

ls -l `find Test/ -perm /u=x,g=x,o=x -type f`

這是一個好/正確/快速的命令嗎?

我的解決方案是:

find Test/ -executable -type f -exec ls -l {} \;

並得到了與warl0ckpradeepchhetri提供的相同的結果。

不是真的,您可以將 ls 命令與 find 集成,

find Test/ -type f -perm /u=x,g=x,o=x -exec ls -l {} \;

更新

實際上-executable不等同於-perm /u=x,g=x,o=x. 您可能擁有隻能由組或其他人執行的文件,這些文件不會顯示。

因此,取決於您的目的,如果您希望文件只能由您執行,那麼可以使用-executable.

不需要使用-exec,因為find帶有-ls標誌。

$ find Test/ -perm /u=x,g=x,o=x -type f -ls

man頁面:

-ls 真;在標準輸出上以 ls -dils 格式列出目前文件。塊計數為 1K 塊,除非設置了環境變數 POSIXLY_CORRECT,在這種情況下使用 512 字節塊。有關如何處理文件名中的異常字元的資訊,請參閱 UNUSUAL FILENAMES 部分。

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