当前位置: 首页 > news >正文

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

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

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

640

用法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」。良许目前就职于一家世界500强外企,专注于Linux应用开发。他的公众号主要分享Linux方面干货,推荐关注!

640

相关文章:

  • 不看技术文,还想不想去腾讯了
  • 魔鬼的实验,请滚远一点!
  • 你想去小米吗?
  • 送6本书+12块STM32板子
  • Ofo彻底凉凉~
  • 腾讯又在搞事情了
  • 公布抽奖名单
  • 双非院校与985有哪些不同?
  • 真的全都是干货!!!
  • 计算机专业必读哪些经典书籍?
  • 从拖延症晚期到自律,我是怎么做到的?
  • 带你学C带你飞
  • 程序员最全进阶资源免费送
  • 公众号征稿,50-150元/篇
  • 程序员提高核心竞争力的几点干货
  • [NodeJS] 关于Buffer
  • 2019.2.20 c++ 知识梳理
  • exif信息对照
  • JavaScript设计模式与开发实践系列之策略模式
  • KMP算法及优化
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • PHP那些事儿
  • React组件设计模式(一)
  • 初识 beanstalkd
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 批量截取pdf文件
  • 前端性能优化——回流与重绘
  • 嵌入式文件系统
  • 如何设计一个微型分布式架构?
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​ssh免密码登录设置及问题总结
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #传输# #传输数据判断#
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (day 12)JavaScript学习笔记(数组3)
  • (js)循环条件满足时终止循环
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十八)三元表达式和列表解析
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)拼包函数及网络封包的异常处理(含代码)
  • . NET自动找可写目录
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .naturalWidth 和naturalHeight属性,
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net MVC中使用angularJs刷新页面数据列表
  • .net web项目 调用webService
  • .NET(C#) Internals: as a developer, .net framework in my eyes