当前位置:首页>弱电技术>系统运维>在 Linux 上列出和排序文件的 11 种方法

在 Linux 上列出和排序文件的 11 种方法

在 Linux 上列出和排序文件的 11 种方法

在 Linux 系统上有很多方法可以列出文件并显示有关它们的信息。这篇文章回顾了许多提供文件详细信息的命令,并提供了自定义文件列表以满足您的需求的选项。

大多数命令会列出单个目录中的文件,而其他命令则可以深入到您希望查看的文件系统中。

列出文件的主要命令当然是ls。但是,此命令具有大量选项,可用于查找和列出您想要查看的文件。另外,总是有find可以帮助进行非常具体的文件搜索。

按名称列出文件

按名称列出文件的最简单方法是使用ls命令列出它们。毕竟,按名称(字母数字顺序)列出文件是默认设置。您可以选择ls (无详细信息)或ls -l (大量详细信息)来确定您的视图。

$ ls | head -6
8pgs.pdf
Aesthetics_Thank_You.pdf
alien.pdf
Annual_Meeting_Agenda-20190602.pdf
bigfile.bz2
bin
$ ls -l | head -6
-rw-rw-r--  1 shs     shs      10886 Mar 22  2019 8pgs.pdf
-rw-rw-r--  1 shs     shs     284003 May 11  2019 Aesthetics_Thank_You.pdf
-rw-rw-r--  1 shs     shs      38282 Jan 24  2019 alien.pdf
-rw-rw-r--  1 shs     shs      97358 May 19  2019 Annual_Meeting_20190602.pdf
-rw-rw-r--  1 shs     shs   18115234 Apr 16 17:36 bigfile.bz2
drwxrwxr-x  4 shs     shs    8052736 Jul 10 13:17 bin

如果您想一次查看一屏列表,请将ls的输出通过管道传输到more命令。

以反向名称顺序列出文件

要按名称反转文件列表,请添加-r(反转)选项。这就像把正常的列表颠倒过来一样。

$ ls -r
$ ls -lr

按文件扩展名列出文件

ls命令不按内容分析文件类型,但适用于文件名。但是,有一个命令选项可以按扩展名列出文件。如果添加-X选项,ls将在每个扩展类别中按名称对文件进行排序。例如,它将首先列出没有扩展名的文件(按字母数字顺序),然​​后是具有 .1、.bz2、.c 等扩展名的文件。

仅列出目录

默认情况下,ls命令将显示文件和目录。如果只想列出目录,可以使用-d选项。你会得到一个像这样的列表:

$ ls -d */
1/     backups/     modules/       projects/     templates/
2/     html/        patches/       public/       videos/
bin/   new/         private/       save/

按大小列出文件

如果要按大小顺序列出文件,请添加-S选项。但是请注意,除非您还添加了-l(长列表)选项,否则这实际上不会向您显示大小(以及其他文件详细信息) 。按大小列出文件时,通常有助于查看命令是否按照您的要求执行。请注意,默认设置是首先显示最大的文件。添加-r选项以扭转这种情况(即ls -lSr)。

$ ls -lS
total 959492
-rw-rw-r--  1 shs   shs  357679381 Sep 19  2019 sav-linux-free-9.tgz
-rw-rw-r--  1 shs   shs  103270400 Apr 16 17:38 bigfile
-rw-rw-r--  1 shs   shs   79117862 Oct  5  2019 Nessus-8.7.1-ubuntu1110_amd64.deb

按所有者列出文件

如果您想按所有者列出文件(例如,在共享目录中),您可以传递ls命令的输出来排序,并通过添加-k3来选择所有者列 以对第三个字段进行排序。

$ ls -l | sort -k3 | more
total 56
-rw-rw-r-- 1 dory  shs      0 Aug 23 12:27 tasklist
drwx------ 2 gdm   gdm   4096 Aug 21 17:12 tracker-extract-files.121
srwxr-xr-x 1 root  root     0 Aug 21 17:12 ntf_listenerc0c6b8b4567
drwxr-xr-x 2 root  root  4096 Aug 21 17:12 hsperfdata_root

事实上,您可以通过这种方式对任何字段进行排序(例如,年份)。请注意添加“n” – -k5n – 如果您要对数字字段进行排序,或者您将按字母数字顺序排序。这种排序技术对于排序文件内容也很有用,而不仅仅是列出文件。

按年龄列出文件

使用-t选项按时间顺序列出文件——它们的新旧程度。添加-r选项以获取列表中最后显示的最近更新的文件。我使用这个别名来显示我最近更新的文件列表:

$ alias recent='ls -ltr | tail -8'

请注意,文件更改和修改时间不同。-c(更改)和-t(修改)选项不会总是给出相同的结果。如果您只更改文件的权限,则-c会将这些文件放在ls输出的顶部,而-t不会。如果您对差异感到好奇,请查看stat命令的输出。

$ stat ckacct
  File: ckacct
  Size: 200             Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d      Inode: 829041      Links: 1
Access: (0750/-rwxr-x---)  Uid: ( 1000/     shs)   Gid: ( 1000/     shs)
Access: 2020-08-20 16:10:11.063015008 -0400
Modify: 2020-08-17 07:26:34.579922297 -0400 <== content changes
Change: 2020-08-24 09:36:51.699775940 -0400 <== content or permissions changes
 Birth: -

按组列出文件

要按关联的组对文件进行排序,您可以将长列表的输出传递给sort命令,并告诉它在第 4 列进行排序。

$ ls -l | sort -k4

按访问日期列出文件

要按访问日期列出文件(最近访问的最先),请使用-ltu选项。“u”强制执行“按访问日期”列出顺序。

$ ls -ltu
total 959500
-rwxr-x---  1 shs     shs        200 Aug 24 09:42 ckacct  <== most recently used
-rw-rw-r--  1 shs     shs       1335 Aug 23 17:45 lte

在一行中列出多个文件

有时,精简的文件列表更适合手头的任务。ls命令甚至有这方面的选项。要在尽可能少的行上列出文件,您可以使用–format=comma以逗号分隔文件名,如以下命令所示:

$ ls --format=comma
1, 10, 11, 12, 124, 13, 14, 15, 16pgs-landscape.pdf, 16pgs.pdf, 17, 18, 19,
192.168.0.4, 2, 20, 2018-12-23_OoS_2.pdf, 2018-12-23_OoS.pdf, 20190512_OoS.pdf,
'2019_HOHO_application working.pdf' …

喜欢留白?请改用–format=across。

$ ls --format=across z*
z              zip            zipfiles      zipfiles1.bat   zipfiles2.bat
zipfiles3.bat  zipfiles4.bat  zipfiles.bat  zoom_amd64.deb  zoomap.pdf
zoom-mtg

为您的搜索增加深度

虽然ls通常列出单个目录中的文件,但您可以选择使用-R选项递归列出文件,深入研究目录的整个深度:

$ ls -R zzzzz | grep -v "^$"
zzzzz:
zzzz
zzzzz/zzzz:
zzz
zzzzz/zzzz/zzz:
zz
zzzzz/zzzz/zzz/zz:
z
zzzzz/zzzz/zzz/zz/z:
sleeping

或者,您可以使用具有有限或无限深度规范的查找命令。在这个命令中,我们指示find命令只查找三个级别的目录:

$ find zzzzz -maxdepth 3
zzzzz
zzzzz/zzzz
zzzzz/zzzz/zzz
zzzzz/zzzz/zzz/zz

选择 ls 与 find

当您需要列出满足非常有选择性的要求列表的文件时,find命令可能是比ls更好的工具。

与ls不同,find命令看起来尽可能深入,除非您对其进行约束。它还有许多其他选项和一个-exec 命令,可让您在找到要查找的文件后执行某些特定操作。

总结

ls命令有很多用于列出文件的选项。去看一下。你可能会找到一些你会喜欢的。

本文由 @小喵 发布于弱电智能网 。

题图来自Unsplash,基于CC0协议

内容观点仅代表作者本人,弱电智能网平台仅提供信息存储空间服务。

如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

添加微信ydian188免费入群,记得备注“弱电智能网”。

给TA打赏
共{{data.count}}人
人已打赏
系统运维

windows系统怎么安装IIS?

2022-10-16 19:08:43

系统运维

在Linux中如何将文件复制到多个位置?

2022-10-18 15:08:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
搜索