Linux
ls 列出目錄參數不能按預期工作
我希望僅列出目前目錄中的所有目錄(不是文件)。我希望
ls -ld ./*
只返回手冊頁狀態的目錄列出目錄而不是內容
目前該命令返回目前目錄下的所有文件和目錄。
或者,我有以下命令可以滿足我的要求,但我在想是否有內置選項可以實現相同的要求
ls -lF ./ | grep ".*/$"
雖然該
-d
標誌確實可以防止ls
下降到目錄中,但這正是它所做的。這並不意味著只列出目錄。這兩個語句之間有一個細微的區別,如果你執行ls -d some_file
,那麼ls
就會顯示給你some_file
。由於您使用的是 shell globbing (./*
),因此此 glob 正在擴展以包含目前目錄中的文件以及目前目錄中的目錄。由於 shell 是執行 globbing 和擴展的,而不是ls
,因此ls
正在接收文件列表。要解決此問題,您需要確保 shell glob 不包含正常文件。
/
您可以通過在 glob 上使用尾隨來做到這一點。由於/
是文件名中禁止使用的特殊字元,但它表示目錄之間的分隔,您可以使用它來僅匹配目錄。例如:
ls -d */