Tech Note · 2023-02-09 0

Linux 查看文件时的参数

https://zhuanlan.zhihu.com/p/203724592

按名称列出文件

最简单的方法是使用 ls 命令按名称列出文件。毕竟,按名称(字母数字顺序)列出文件是默认的。你可以选择 ls(无细节)或 ls -l(大量细节)来决定你看到什么。

$ ls | head -6

8pgs.pdf
Aesthetics_Thank_You.pdf
alien.pdf
Annual_Meeting_Agenda-20190602.pdf
bigfile.bz2

按年份排列文件

使用 -t( 修改时间(Time modified))选项按年份顺序列出文件 —— 它们的新旧程度。添加 -r 选项,让最近更新的文件在列表中最后显示。我使用这个别名来显示我最近更新的文件列表。

$ alias recent=’ls -ltr | tail -8′

请注意,文件的更改时间和修改时间是不同的。-c( 更改时间(time Changed))和 -t(修改时间)选项的结果并不总是相同。如果你改变了一个文件的权限,而没有改变其他内容,-c 会把这个文件放在 ls 输出的顶部,而 -t 则不会。如果你想知道其中的区别,可以看看 stat 命令的输出。

按大小排列文件

如果你想按大小顺序列出文件,请添加 -S( 大小(Size))选项。但请注意,这实际上不会显示文件的大小(以及其他文件的细节),除非你还添加 -l( 长列表(Long listing))选项。当按大小列出文件时,一般来说,看到命令在按你的要求做事情是很有帮助的。注意,默认情况下是先显示最大的文件。添加 -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 命令将同时显示文件和目录。如果你想只列出目录,你可以使用 -d( 目录(Directory))选项。你会得到一个像这样的列表:

$ ls -d */

1/ backups/ modules/ projects/ templates/
2/ html/ patches/ public/ videos/
bin/ new/ private/ save/

按文件扩展名列出文件

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

增加搜索的深度

虽然 ls 一般只列出单个目录中的文件,但你可以选择使用 -R 选项( 递归(Recursively))地列出文件,深入到整个目录的深处。

$ ls -R zzzzz | grep -v "^$”

zzzzz:
zzzz
zzzzz/zzzz:
zzz
zzzzz/zzzz/zzz:
zz
zzzzz/zzzz/zzz/zz:

另外,也可以使用 find 命令,对深度进行限制或不限制。在这个命令中,我们指示 find 命令只在三个层次的目录中查找:

$ find zzzzz -maxdepth 3

zzzzz
zzzzz/zzzz
zzzzz/zzzz/zzz
zzzzz/zzzz/zzz/zz

选择 ls 还是 find

当你需要列出符合具体要求的文件时,find 命令可能是比 ls 更好的工具。
与 ls 不同的是,find 命令会尽可能地深入查找,除非你限制它。它还有许多其他选项和一个 -exec 子命令,允许在找到你要找的文件后采取一些特定的行动。