升级VIP,SVIP会员,轻松下载全站资料>>>
在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命令。
以反向名称次序列举文件
要按名称反转文件列表,请添加-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/
按大小列举文件
假如要按大小次序列举文件,请添加-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–如果您要对数字数组进行排序,或则您将按字母数字次序排序。这些排序技术对于排序文件内容也很有用,而不仅仅是列举文件。
按年纪列举文件
使用-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命令有好多用于列举文件的选项。去看一下。你可能会找到一些你会喜欢的。
本文原创地址://q13zd.cn/zlxtsqsxzqzz.html编辑:刘遄,审核员:暂无