在 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协议
内容观点仅代表作者本人,弱电智能网平台仅提供信息存储空间服务。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
文章名称:《在 Linux 上列出和排序文件的 11 种方法》
文章链接:https://www.ruodian360.com/tech/sytemops/34807.html
添加微信ydian188免费入群,记得备注“弱电智能网”。