Linux下 ls 命令的高级用法8例

在Linux下,ls这个命令大家必定太相熟了,良许置信只有是Linux工程师,每天都会离不开这个命令,而且一天会应用个几百次。然而,除了 ls -l 以外,你还知 ls 的哪些高级用法呢?良许明天为大家介绍 ls 命令的8种高级用法。

如果咱们有这样的一个文件夹,咱们用tree命令查看它的目录构造:

用法1:列出/home/alvin/test_dir目录下所有文件及目录的详细资料

命令:

ls -lR /home/alvin/test_dir/

后果:

[alvin@VM_0_16_centos test_dir]$ ls -lR /home/alvin/test_dir//home/alvin/test_dir/:total 28-rw-rw-r-- 1 alvin alvin   37 Nov 18 09:12 atb_aux.c-rw-rw-r-- 1 alvin alvin    8 Nov 18 09:12 atb_can.c-rw-rw-r-- 1 alvin alvin   24 Nov 18 09:12 atb_orch.c-rw-rw-r-- 1 alvin alvin    5 Nov 18 09:12 atb_ota.cdrwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 include-rw-rw-r-- 1 alvin alvin    0 Nov 18 09:12 Makefiledrwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 outputdrwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 src/home/alvin/test_dir/include:total 0-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 a.h-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 b.h-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 c.h/home/alvin/test_dir/output:total 0-rwxrwxr-x 1 alvin alvin 0 Nov 18 09:12 app/home/alvin/test_dir/src:total 0-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 a.c-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 b.c-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 c.c

在这里,-l 选项大家应该比拟相熟,是以列表的模式显示后果的意思。而对于 -R 选项,意思是递归解决,将指定目录下的所有文件及子目录一并处理。

用法2:列出/home/alvin/test_dir目录下以atb结尾的所有文件的具体内容

命令:

ls -l atb*

后果:

[alvin@VM_0_16_centos test_dir]$ ls -l atb*-rw-rw-r-- 1 alvin alvin 37 Nov 18 09:12 atb_aux.c-rw-rw-r-- 1 alvin alvin  8 Nov 18 09:12 atb_can.c-rw-rw-r-- 1 alvin alvin 24 Nov 18 09:12 atb_orch.c-rw-rw-r-- 1 alvin alvin  5 Nov 18 09:12 atb_ota.c

用法3:只列出目录下的子目录

  • 办法1

命令

ls -F /home/alvin/test_dir | grep /$

后果:

[alvin@VM_0_16_centos test_dir]$ ls -F /home/alvin/test_dir | grep /$include/output/src/

其中:-F选项示意在每个文件名后附上一个字符以阐明改文件的类型。“*”:示意可执行的一般文件;“/”:示意目录;“@”:示意符号链接;“|”:示意FIFOs;“=”:示意套接字。

/$ 其实是一个正则表达式,示意以 / 结尾。grep /$ 示意过滤出以 / 结尾的后果,也就是子目录。

  • 办法2

命令:

ls -p /home/alvin/test_dir | grep /$

后果:

[alvin@VM_0_16_centos test_dir]$ ls -p | grep /$include/output/src/

其中:-p 选项与 -F 选项相似,也是在每个文件名后附上一个字符以阐明改文件的类型。

  • 办法3

命令:

ls -l /home/alvin/test_dir | grep "^d"

后果:

[alvin@VM_0_16_centos test_dir]$ ls -l /home/alvin/test_dir | grep "^d"drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 includedrwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 outputdrwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 src

其中:^d 也是一个正则表达式,示意以 d 结尾。grep "^d" 示意过滤出以 d 结尾的后果,而 ls -l 所列出来的后果,首位如果是 d 的话,示意这个文件是个目录,这样就能够过滤出子目录了。

  • 办法4

命令:

ls -d */

后果:

[alvin@VM_0_16_centos test_dir]$ ls -d */include/  output/  src/

其中:-d 选项示意将目录象文件一样显示,而不显示其下的文件。

用法4:按工夫程序列出目录下的文件,越新越排前面。

命令:

ls -ltr

后果:

[alvin@VM_0_16_centos test_dir]$ ls -lrttotal 28drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 srcdrwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 output-rw-rw-r-- 1 alvin alvin    0 Nov 18 09:12 Makefiledrwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 include-rw-rw-r-- 1 alvin alvin    5 Nov 18 09:12 atb_ota.c-rw-rw-r-- 1 alvin alvin   24 Nov 18 09:12 atb_orch.c-rw-rw-r-- 1 alvin alvin    8 Nov 18 09:12 atb_can.c-rw-rw-r-- 1 alvin alvin   37 Nov 18 09:12 atb_aux.c

其中:-t 选项示意以文件批改工夫排序,越新的越靠前。-r 选项示意对后果进行反向排序,二者联合的话示意以批改工夫排序,越新的越靠后。

用法5:以文件大小进行排序

命令:

ls -lhS

后果:

[alvin@VM_0_16_centos test_dir]$ ls -lhStotal 28Kdrwxrwxr-x 2 alvin alvin 4.0K Nov 18 09:12 includedrwxrwxr-x 2 alvin alvin 4.0K Nov 18 09:12 outputdrwxrwxr-x 2 alvin alvin 4.0K Nov 18 09:12 src-rw-rw-r-- 1 alvin alvin   37 Nov 18 09:12 atb_aux.c-rw-rw-r-- 1 alvin alvin   24 Nov 18 09:12 atb_orch.c-rw-rw-r-- 1 alvin alvin    8 Nov 18 09:12 atb_can.c-rw-rw-r-- 1 alvin alvin    5 Nov 18 09:12 atb_ota.c-rw-rw-r-- 1 alvin alvin    0 Nov 18 09:12 Makefile

其中:-h 选项示意以可读选项显示,否则文件大小是默认以字节数显示,比方:4873字节,你晓得是多少吗?加了 -h 选项零碎就帮你换算成以k或者其它单位的后果。

-S 选项示意以文件大小进行排序,文件越大越靠前。想要文件小者靠前的话,加个 -r 选项就行。

用法6:统计当前目录下的文件数和目录数

  • 统计文件数

命令:

ls -l | grep "^-" | wc -l

后果:

[alvin@VM_0_16_centos test_dir]$ ls -l | grep "^-" | wc -l5

其中:^- 示意以 - 结尾,即一般文件,ls -l | grep "^-" 过滤出一般文件,再用 wc -l统计过滤出的一般文件的个数。

  • 统计目录数

命令:

ls -l | grep "^d" | wc -l

后果:

[alvin@VM_0_16_centos test_dir]$ ls -l | grep "^d" | wc -l3

其中:^d 示意以 d 结尾,即目录,ls -l | grep "^d" 过滤出目录,再用 wc -l 统计过滤出的目录的个数。

用法7:列出所有文件的绝对路径

命令:

ls | sed "s:^:`pwd`/:"

后果:

[alvin@VM_0_16_centos test_dir]$ ls | sed "s:^:`pwd`/:"/home/alvin/test_dir/atb_aux.c/home/alvin/test_dir/atb_can.c/home/alvin/test_dir/atb_orch.c/home/alvin/test_dir/atb_ota.c/home/alvin/test_dir/include/home/alvin/test_dir/Makefile/home/alvin/test_dir/output/home/alvin/test_dir/src

其中:sed "s:^:`pwd/:"` 示意在行首减少 pwd``(即文件所在门路),与文件名组合成绝对路径。

用法8:列出当前目录下的所有文件(包含暗藏文件)的绝对路径, 对目录不做递归

在上一个用法里,对于暗藏文件(即以 . 结尾的文件)是不作解决的,如果咱们须要对暗藏文件也作解决的话,就须要应用上面这个命令:

find $PWD -maxdepth 1 | xargs ls -ld

后果:

[alvin@VM_0_16_centos test_dir]$ find $PWD -maxdepth 1 | xargs ls -lddrwxrwxr-x 5 alvin alvin 4096 Nov 18 17:30 /home/alvin/test_dir-rw-rw-r-- 1 alvin alvin   37 Nov 18 09:12 /home/alvin/test_dir/atb_aux.c-rw-rw-r-- 1 alvin alvin    8 Nov 18 09:12 /home/alvin/test_dir/atb_can.c-rw-rw-r-- 1 alvin alvin   24 Nov 18 09:12 /home/alvin/test_dir/atb_orch.c-rw-rw-r-- 1 alvin alvin    5 Nov 18 09:12 /home/alvin/test_dir/atb_ota.cdrwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 /home/alvin/test_dir/include-rw-rw-r-- 1 alvin alvin    0 Nov 18 09:12 /home/alvin/test_dir/Makefiledrwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 /home/alvin/test_dir/outputdrwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 /home/alvin/test_dir/src

其中:find $PWD -maxdepth 1 限定了在以后层级(即不递归),再对find后果传递给 ls -ld 作参数,这样就将当前目录下的所有文件补齐了所在门路。

更多精彩内容,请关注公众号良许Linux,公众内回复1024可收费取得5T技术材料,包含:Linux,C/C++,Python,树莓派,嵌入式,Java,人工智能,等等。公众号内回复进群,邀请您进高手如云技术交换群。


最初,最近很多小伙伴找我要Linux学习路线图,于是我依据本人的教训,利用业余时间熬夜肝了一个月,整顿了一份电子书。无论你是面试还是自我晋升,置信都会对你有帮忙!

收费送给大家,只求大家金指给我点个赞!

电子书 | Linux开发学习路线图

也心愿有小伙伴能退出我,把这份电子书做得更完满!

有播种?心愿老铁们来个三连击,给更多的人看到这篇文章

举荐浏览:

  • 干货 | 程序员进阶架构师必备资源免费送
  • 神器 | 反对搜寻的资源网站