按字母顺序对目录列表进行排序

按字母顺序对目录列表进行排序

我需要按字母顺序对目录进行降序排序,并且排序管道不起作用。

alias ld='ls -altp | grep ^d|sort -n'

答案1

ls -ld */

这将为您提供当前目录中的长格式目录ls,按字典顺序排列。如果文件是目录的符号链接,则该文件也将被列为目录。

如果您ls对某些内容使用了别名,请使用command ls\ls而不是ls上面的。

之后的尾部斜杠*将确保*仅扩展到目录(可能通过解析符号链接),并且它也将包含在输出中。该-d选项将确保列出目录本身,而不是其内容。

作为杰夫指出,命名别名ld是一个坏主意,因为它与现有实用程序的名称冲突。

答案2

不要解析 的输出ls。这是一个坏主意,这样做会让你感觉很糟糕。相反,find目录,让ls我们为您排序然后不尝试咀嚼其输出:

$ find . -maxdepth 1 -type d -print0 | xargs -0 ls -ld

令人高兴的是,默认ls情况下已经按字典顺序对其输出进行排序。

更简单地说,有tree

$ tree -d -L 1

答案3

你告诉sort我们对长列表进行排序ls 数字上。这是在告诉ls按修改时间对列表进行排序 ( t) 之后!

我对短期修复的最佳建议是:

ls -d */ | sort # optionally `-f` to sort upper- and lower-case together.

我建议使用 zsh 等可以选择目录的 shell对它们本身进行排序:

zsh -c "ls -ld */(on)"

其中/指定您只需要目录,限定符(on)表示根据目录名称对列表进行排序。

我还建议不要超载ld程序名称

alias lls='zsh -c "ls -ld */(on)"'

相关内容