Shell
列出目前目錄中的文件、目錄和執行檔
我有 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
,F
,D
用於可執行正常文件、其他正常文件、目錄)。對於符號連結,如果要考慮符號連結目標的類型,請使用上面的
-xtype
代替-type
。-executable
返回可由執行該 find 命令的程序執行的文件。其他類型的文件(fifo、socket、門、設備…)將被忽略。和目錄條目.
也..
被忽略。