默认情况下,ls 命令仅按文件名排序,但我希望目录出现在其他文件类型之前。我什至可能希望文件按扩展名排序,就像 Windows 资源管理器按类型列排序的方式。有没有办法用ls做类似的事情?
小智 53
我认为完整的答案更像是上述的组合。
-X (later --sort=extension)至少从 FC3 起就在 Linux 中得到支持,并将根据扩展名进行排序。--group-directories-first是最近添加的(可能在 FC8 左右?)。但是,将两者结合起来似乎不起作用(至少在 FC8 上)。
主要问题似乎是使用单一的主排序键。请参阅此邮件列表讨论以深入了解它。
小智 26
在 Linux 上,
$ ls --group-directories-first
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. 像这样:
或者,更重要的是,如下所示。它们按最后一个字符排序,然后是倒数第二个等等。例如,所有 .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~
| 归档时间: |
|
| 查看次数: |
73618 次 |
| 最近记录: |