Linux下ls命令怎么用

这篇文章给大家分享的是有关Linux下ls命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的盐都网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

假如我们有这样的一个文件夹,我们用tree命令查看它的目录结构:

Linux下ls命令怎么用

用法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) 方法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) 方法2:

命令:

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

结果:

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

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

(3) 方法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) 方法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:统计当前目录下的文件数和目录数

(1) 统计文件数:

命令:

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

结果:

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

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

(2) 统计目录数:

命令:

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下ls命令怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


新闻名称:Linux下ls命令怎么用
文章源于:http://hbruida.cn/article/gepigi.html