Shell

列出目前目錄中的文件、目錄和執行檔

  • March 31, 2014

我有 php shell,並且我有可以做到這一點的函式(但是scandir($path)由於 php 的限制,當我呼叫函式時它給了我錯誤),所以我需要使用我的 bash shell 來做同樣的事情。

它可以是一個命令,列出由一些分隔符分隔的所有 3 個內容,也可以是 3 個命令。

最好的方法是什麼?我唯一能想到的是find執行 3 次-maxdepth 1和一些選項。

使用 GNU find,您可以呼叫:

find /some/dir -mindepth 1 -maxdepth 1 -type f \
 \( -executable -printf 'X%p\0' -o -printf 'F%p\0' \) -o \
 -type d -printf 'D%p\0'

輸出將是一個以 NUL 分隔(NUL 是唯一可能不會出現在文件路徑中的字元)的記錄列表,其中的第一個字母標識類型X, FD用於可執行正常文件、其他正常文件、目錄)。

對於符號連結,如果要考慮符號連結目標的類型,請使用上面的-xtype代替-type-executable返回可由執行該 find 命令的程序執行的文件。其他類型的文件(fifo、socket、門、設備…)將被忽略。和目錄條目...被忽略。

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