Linux

ls 列出目錄參數不能按預期工作

  • June 4, 2018

我希望僅列出目前目錄中的所有目錄(不是文件)。我希望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 */

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