升级VIP,SVIP会员,轻松下载全站资料>>>

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

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

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

列举文件的主要命令其实是ls。并且,此命令具有大量选项,可用于查找和列举您想要查看的文件。另外linux内核,总是有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命令。

linux按文件大小排序显示_linux按文件类型排序_linux文件按大小排序

以反向名称次序列举文件

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

$ ls -r
$ ls -lr

按文件扩充名列举文件

ls命令不按内容剖析文件类型,但适用于文件名。并且,有一个命令选项可以按扩充名列举文件。假如添加-X选项linux文件按大小排序,ls将在每位扩充类别中按名称对文件进行排序。比如linux web服务器,它将首先列举没有扩充名的文件(按字母数字次序),然​​后是具有.1、.bz2、.c等扩充名的文件。

仅列举目录

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

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

linux按文件类型排序_linux文件按大小排序_linux按文件大小排序显示

按大小列举文件

假如要按大小次序列举文件,请添加-S选项。并且请注意,除非您还添加了-l(长列表)选项,否则这实际上不会向您显示大小(以及其他文件详尽信息)。按大小列举文件时,一般有助于查看命令是否根据您的要求执行。请注意linux文件按大小排序,默认设置是首先显示最大的文件。添加-r选项以扭转此类情况(即ls-lSr)。

$ ls -lS
total 959492
-rw-rw-r--  1 shs   shs  357679381 Sep 19  2019 sav--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–如果您要对数字数组进行排序,或则您将按字母数字次序排序。这些排序技术对于排序文件内容也很有用,而不仅仅是列举文件。

按年纪列举文件

linux按文件大小排序显示_linux文件按大小排序_linux按文件类型排序

使用-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

按访问日期列举文件

linux按文件类型排序_linux文件按大小排序_linux按文件大小排序显示

要按访问日期列举文件(近来访问的最先),请使用-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

为您的搜索降低深度

linux按文件类型排序_linux文件按大小排序_linux按文件大小排序显示

尽管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命令有好多用于列举文件的选项。去看一下。你可能会找到一些你会喜欢的。

本文原创地址://q13zd.cn/zlxtsqsxzqzz.html编辑:刘遄,审核员:暂无