如何让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~