在 Unix 中使用“ls”时,如何先对目录进行排序,然后对文件等进行排序

在 Unix 中使用“ls”时,如何先对目录进行排序,然后对文件等进行排序

我想使用该ls命令首先显示目录,然后显示文件。我试过:

ls -la | sort -k 1

但我收到了错误的订单。

答案1

以下命令将首先列出目录,其次列出普通文件,第三列出链接。

ls -la | grep "^d" && ls -la | grep "^-" && ls -la | grep "^l"

此外,创建一个别名此命令可以保存击键。

编辑:

如果您首先想要目录,然后再想要所有非目录的内容,请使用以下命令:

ls -la | grep "^d" && ls -la | grep -v "^d"

答案2

我确实很喜欢 *nix,也喜欢看到这些回复中所体现的创造力......

我在 GNU Linux 上并没有那么花哨:

alias ls='ls --color -h --group-directories-first'

鉴于我更喜欢​​使用 Linux CLI 应用程序,因此我倾向于在 OSX 上更新 coreutils:

brew install coreutils
alias ls='/usr/local/bin/gls --color -h --group-directories-first'

答案3

对于 Mac 用户,你可以安装核心工具

该公式提供了 GNU 核心实用程序实现,对于 macOS 也提供的命令,它们已使用“g”前缀安装。

brew install coreutils
gls --color -h --group-directories-first

你可以使用别名进一步简化你的生活

alias ls='gls --color -h --group-directories-first'

答案4

您有几种选择,取决于您是否想保持字母顺序。

您可以尝试:

ls -al | sort -k1 -r

或者这样,保持具有相同权限的文件按字母顺序排列:

ls -al | 排序 -k1,1 -k9,9 -r

或者,正如 eleven81 所说(但此版本列出了所有内容):

ls -la | grep "^d" && ls -la | grep“^-”&& ls -al | grep -v "^[d|-]"

相关内容