Answers:
我认为完整的答案更多是以上两种方法的结合。
-X (later --sort=extension)
至少从FC3开始在Linux中受支持,并将基于扩展名进行排序。--group-directories-first
是最近才添加的(也许是在FC8附近?)。但是,将两者结合似乎并不起作用(至少在FC8上如此)。
-X / --sort=extension
,--group-directories-first
与我在现代Linux发行版上尝试过的其他任何东西结合在一起都没有问题。OP指的是Fedora Core 8(2007年发布),因此很可能在不久的将来出现任何此类问题。
在Linux上,
$ ls --group-directories-first
(man ls
是你的朋友!)
gls --group-directories-first
在Mac上(如果您GNU Core utils
通过自制软件安装)
在bash上,这可以完成一些工作:
$ ls | rev | sort | rev
来自man rev
:
The rev utility copies the specified files to the standard output,
reversing the order of characters in every line. If no files are speci-
fied, the standard input is read.
所以1. ls给出其输出,并带有您想要的任何标志2.将每一行都反转3.然后对其进行排序4.然后再次反转5.像这样:
或更重要的是,如下所示。它们按最后一个字符排序,然后按倒数第二个排序,依此类推。例如,所有.rtf文件在一个.save文件和另一个没有扩展名,名称以'e'结尾的文件之后一起列出。然后是.png文件,依此类推。这也可以与ls -l一起使用,因为扩展名通常是该行中的最后一件事(如果您有类似“ tmp @-> / home / jones / tmp”的行,则例外,链接后面是目标)。
$ ls | rev | sort | rev cslu1 ls.mp2 ls.mp3 ls.mp4 trees_110214-15 拍 加利福尼亚州立大学 代理表格.doc Finannbyid 毒死by 101209ssi.txt.save to_annotate_size Matas每周整合时间2.rtf cyp3.rtf data-dir-scan.perl.doc.rtf whence-r21-numid.rtf 鸭嘴兽 屏幕截图2011年1月21日于2.17.50 PM.png emacs打印help.png 日志 new_month_log 特别 Google-ngram-critique.html perl_path.html nl DWE_BEN_89808.2.ann 富 杜富 100811_from_iMac_Documents_in_dock.zip to-palikir.zip tmp 文件清理 酒吧 数据扫描文档 cmp-mg-ann-numids finish_numids to_annotate_numids manls.ps Mike_address_ticket cyp2.out cyp3.out locate-cyp.out manls.out DWE_BEN_89808.2.text tag2.txt l2.txt du-h-d3.txt finish_ann_numids_110407_1714.txt finish_all_numids_110407_1718.txt data-dir-scan.perl.doc.txt whence-r21-numid.txt finannid.txt toannid.txt b9-workspace-anndiff.txt tag.txt duh.txt do-mail.txt safextn.txt mg3longhdr.txt finish_numids.txt 41692-langnames.txt TimeAnnotationGuidelines.txt 41langs.txt something4-homedir-links.txt bnlinks.txt grants.txt mata-file-reports.txt logx.txt 日志 b9-workspace-anndiff.txt〜 bnlinks.txt〜
ls -F
-F
其通过管道输送rev
&sort
并且未去除颜色(-G
),那将是很好的(尤其是使用)。
如果您不在Linux上,
ls -l |sort -d -k 1.1,1.1r -k 9 |awk '{print $9}'
应该首先对目录进行排序(如果我写错了,请告诉我)。但是,并没有按扩展名排序:如果要这样做,则必须使awk语句更加繁琐...
为了也可以使用包含空格的名称,我可能会用类似awk的方式来替换掉sed -E -e 's/([^ ]+[ ]+){8}//'
前8个字段,而不是打印第9个字段
CLICOLOR
打开,则将删除颜色。
sed -E -e 's/([^ ]+[ ]+){8}//'
剥离出来的头8个字段不是打印9日
ls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-
我在.bashrc(linux)中添加了这一行
alias lx = "ls -X"
这样,我只需键入lx并按扩展名对其进行排序。
ls -X
:)
--sort=extension
和--group-directories-first
(或only--group-directories
)的组合对我来说在Ubuntu 12.10上很好用。值得一试的机器!=)