共计 4939 个字符,预计需要花费 13 分钟才能阅读完成。
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.c
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 include
-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 Makefile
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 output
drwxrwxr-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 include
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 output
drwxrwxr-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 -lrt
total 28
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 src
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 output
-rw-rw-r-- 1 alvin alvin 0 Nov 18 09:12 Makefile
drwxrwxr-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 -lhS
total 28K
drwxrwxr-x 2 alvin alvin 4.0K Nov 18 09:12 include
drwxrwxr-x 2 alvin alvin 4.0K Nov 18 09:12 output
drwxrwxr-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 -l
5
其中:^-
示意以 -
结尾,即一般文件,ls -l | grep "^-"
过滤出一般文件,再用 wc -l
统计过滤出的一般文件的个数。
- 统计目录数:
命令:
ls -l | grep "^d" | wc -l
后果:
[alvin@VM_0_16_centos test_dir]$ ls -l | grep "^d" | wc -l
3
其中:^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 -ld
drwxrwxr-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.c
drwxrwxr-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/Makefile
drwxrwxr-x 2 alvin alvin 4096 Nov 18 09:12 /home/alvin/test_dir/output
drwxrwxr-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 开发学习路线图
也心愿有小伙伴能退出我,把这份电子书做得更完满!
有播种?心愿老铁们来个三连击,给更多的人看到这篇文章
举荐浏览:
- 干货 | 程序员进阶架构师必备资源免费送
- 神器 | 反对搜寻的资源网站