如何让ls按文件扩展名排序然后命名?

all*_*ode 54 linux shell

默认情况下,ls 命令仅按文件名排序,但我希望目录出现在其他文件类型之前。我什至可能希望文件按扩展名排序,就像 Windows 资源管理器按类型列排序的方式。有没有办法用ls做类似的事情?

小智 53

我认为完整的答案更像是上述的组合。

-X (later --sort=extension)至少从 FC3 起就在 Linux 中得到支持,并将根据扩展名进行排序。--group-directories-first是最近添加的(可能在 FC8 左右?)。但是,将两者结合起来似乎不起作用(至少在 FC8 上)。

主要问题似乎是使用单一的主排序键。请参阅此邮件列表讨论以深入了解它。

  • 我知道这篇文章已经很旧了,但是对于其他来自例如 Google 的人(就像我所做的那样):`--sort=extension` 和 `--group-directories-first` 的组合(或只有 `--group- directory`) 在 Ubuntu 12.10 上对我来说很好用。也值得在您的机器上试一试!=) (5认同)

小智 26

在 Linux 上,

$ ls --group-directories-first
Run Code Online (Sandbox Code Playgroud)

  • 如果您通过自制程序安装“GNU Core utils”,则 Mac 上的“gls --group-directories-first” (2认同)

小智 17

-X 是您正在寻找的选项:

ls -lX
Run Code Online (Sandbox Code Playgroud)


小智 14

在 bash 上,这会起作用:

$ ls | rev | sort | rev
Run Code Online (Sandbox Code Playgroud)

来自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.
Run Code Online (Sandbox Code Playgroud)

所以 1. ls 给出它的输出,带有你想要的任何标志 2. 每行被反转 3. 然后它们被排序 4. 并再次反转 5. 像这样:

  1. 像这样:
  2. 每条线都颠倒了
  3. 然后他们被排序
  4. 并再次反转 所以
  5. ls 给出它的输出,带有你想要的任何标志

或者,更重要的是,如下所示。它们按最后一个字符排序,然后是倒数第二个等等。例如,所有 .rtf 文件都列在一个 .save 文件和另一个名称以“e”结尾的没有扩展名的文件之后。然后是 .png 文件,等等。这也适用于 ls -l,因为扩展名通常是行中的最后一个东西(例外,如果你有像“tmp@ -> /home/jones/tmp”这样的行,其中链接后面是它们的目标)。

$ ls | 转|排序|转
 cslu1
 ls.mp2
 ls.mp3
 ls.mp4
 树木_110214-15
 拍
 加州大学洛杉矶分校
 委托书.doc
 金融界
 安拜德
 101209ssi.txt.save
 to_annotate_size
 Matas-time-by-week-integration2.rtf
 cyp3.rtf
 数据目录-scan.perl.doc.rtf
 wherece-r21-numid.rtf
 鸭嘴兽.rtf
 屏幕截图 2011-01-21 at 2.17.50 PM.png
 emacs 打印帮助.png
 日志
 新月日志
 特别的
 谷歌-ngram-critique.html
 perl_path.html
 nl
 DWE_BEN_89808.2.ann
 富
 多福
 100811_from_iMac_Documents_in_dock.zip
 to-palikir.zip
 时间
 文件清理
 酒吧
 数据扫描文档
 cmp-mg-ann-numids
 已完成_numids
 to_annotate_numids
 文件
 Mike_address_ticket
 cyp2.out
 cyp3.out
 定位-cyp.out
 手动输出
 DWE_BEN_89808.2.text
 标签2.txt
 l2.txt
 du-h-d3.txt
 Finished_ann_numids_110407_1714.txt
 Finished_all_numids_110407_1718.txt
 数据目录-scan.perl.doc.txt
 wherece-r21-numid.txt
 finannid.txt
 toannid.txt
 b9-workspace-anndiff.txt
 标签.txt
 .txt
 邮箱.txt
 安全文本文件
 mg3longhdr.txt
 已完成_numids.txt
 41692-langnames.txt
 时间注释指南.txt
 41语言.txt
 thing4-homedir-links.txt
 链接.txt
 赠款.txt
 mata-file-reports.txt
 日志文件
 对数
 b9-workspace-anndiff.txt~
 bnlinks.txt~