我需要按字母顺序对目录进行降序排序,并且排序管道不起作用。
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)"'