开启辅助访问 切换到窄版

打印 上一主题 下一主题

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

[复制链接]
作者:我爱佳运园 
版块:
嵌入式操作系统 linux 发布时间:2020-9-20 02:16:21
14160
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在Linux下,ls这个命令大家肯定太熟悉了,良许相信只要是Linux工程师,每天都会离不开这个命令,而且一天会使用个几百次。但是,除了 ls -l 以外,你还知 ls 的哪些高级用法呢?良许今天为大家介绍 ls 命令的8种高级用法。
假如我们有这样的一个文件夹,我们用tree命令查看它的目录结构:

命令:
ls -lR /home/alvin/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 选项,意思是递归处理,将指定目录下的所有文件及子目录一并处理。
命令:
ls -l atb*结果:
$ 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

  • 方法1
命令
ls -F /home/alvin/test_dir | grep /$结果:
$ ls -F /home/alvin/test_dir | grep /$include/output/src/其中:-F选项表示在每个文件名后附上一个字符以说明改文件的类型。“*”:表示可执行的普通文件;“/”:表示目录;“@”:表示符号链接;“|”:表示FIFOs;“=”:表示套接字。
/$ 其实是一个正则表达式,表示以 / 结尾。grep /$ 表示过滤出以 / 结尾的结果,也就是子目录。

  • 方法2
命令:
ls -p /home/alvin/test_dir | grep /$结果:
$ ls -p | grep /$include/output/src/其中:-p 选项与 -F 选项类似,也是在每个文件名后附上一个字符以说明改文件的类型。

  • 方法3
命令:
ls -l /home/alvin/test_dir | grep "^d"结果:
其中:^d 也是一个正则表达式,表示以 d 开头。grep "^d" 表示过滤出以 d 开头的结果,而 ls -l 所列出来的结果,首位如果是 d 的话,表示这个文件是个目录,这样就可以过滤出子目录了。

  • 方法4
命令:
ls -d */结果:
$ ls -d */include/ output/ src/其中:-d 选项表示将目录象文件一样显示,而不显示其下的文件。
命令:
ls -ltr结果:
$ 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 选项表示对结果进行反向排序,二者结合的话表示以修改时间排序,越新的越靠后。
命令:
ls -lhS结果:
$ 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 选项就行。

  • 统计文件数
命令:
ls -l | grep "^-" | wc -l结果:
$ ls -l | grep "^-" | wc -l5其中:^- 表示以 - 开头,即普通文件,ls -l | grep "^-" 过滤出普通文件,再用 wc -l统计过滤出的普通文件的个数。

  • 统计目录数
命令:
ls -l | grep "^d" | wc -l结果:
$ ls -l | grep "^d" | wc -l3其中:^d 表示以 d 开头,即目录,ls -l | grep "^d" 过滤出目录,再用 wc -l 统计过滤出的目录的个数。
命令:
ls | sed "s:^:`pwd`/:"结果:
$ 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结果:
$ 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 作参数,这样就将当前目录下的所有文件补齐了所在路径。

#### 看完的都是真爱,点个赞再走呗?您的「三连」就是良许持续创作的最大动力!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表