ls: 显示目下的内容及相关属性信息

【功能说明】

  ls 命令可以理解为英文单词 “list” 的缩写,其功能是列出目录的内容及其内容属性信息(list directory contents)。该命令有点类似于DOS系统下的dir命令,有趣的是,Linux下其实也有dir命令,但是我们更习惯于使用ls命令。

【语法格式】

1 ls    [option]     [file]
2 ls   【选项】 【文件或者目录】

 提示说明:

  1) ls命令以及后面的选项和文件,每个元素之间都要至少要有一个空格。

  2) 命令后面的选项和目录文件可以省略,表示查看当前路径的文件信息

【命令参数说明】

参数选项 解释说明
-l 使用长格式列出文件及目录信息
-a 显示目录下的所有文件,包括以 “.” 字符开始的隐藏文件
-t 根据最后的修改时间(mtime)排序,默认是以文件名排序
-r 依相反次序排序
-F 在条目后加文件类型的指示符号(*、/、=、@、|,其中的一个)
-P 只在目录后面加上 “/”
-i 显示文件或目录的inode节点信息
-d 当遇到目录时,列出目录本身而非目录内的文件,并且不跟随符号链接
-h 以人类可读的信息显示文件或目录大小,如1kb、1M、1G等显示格式
-S 根据文件大小排序
-R 递归列出所有子目录
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-c 根据状态改变时间(ctime)排序
-u 根据最后访问时间(atime)排序
--color={never,always,auto} 不同的文件类型显示不同的颜色参数,never表示不显示,always表示总是显示,auto表示自动显示
--full-time 以完整的时间格式输出
--time-style={full-iso,long-ios,ios,locale} 以不同的时间格式输出,long-iso效果最好
--time={atime,ctime} 按不同的时间属性输出,atime表示按访问时间,ctime表示按改变权限属性时间,如果不加此参数则默认认为最后的修改时间。
   

【使用范例】

在开始范例讲解之前,需要先做一些准备,顺便整合一下前面使用的命令。

 1 [root@test-1 ansible]# mkdir -p /test
2 [root@test-1 ansible]# cd /test/
3 [root@test-1 test]# touch file{1..5}.txt
4 [root@test-1 test]# mkdir -p dir{1..5}
5 [root@test-1 test]# tree
6 .
7 ├── dir1
8 ├── dir2
9 ├── dir3
10 ├── dir4
11 ├── dir5
12 ├── file1.txt
13 ├── file2.txt
14 ├── file3.txt
15 ├── file4.txt
16 └── file5.txt
17
18 5 directories, 5 files

1.基础范例

1.1 案例1:直接指向ls命令,不带任何参数。

1 [root@test-1 test]# ls
2 dir1 dir2 dir3 dir4 dir5 file1.txt file2.txt file3.txt file4.txt file5.txt

1.2 案例2:使用-a参数显示所有文件,特别是隐藏文件。

1 [root@test-1 test]# touch .file6.txt     #在创建一个隐藏文件,在linux系统中“.”(点号)开头的文件就是隐藏文件
2 [root@test-1 test]# ls
3 dir1 dir2 dir3 dir4 dir5 file1.txt file2.txt file3.txt file4.txt file5.txt
4 [root@test-1 test]# ls -a
5 . .. dir1 dir2 dir3 dir4 dir5 file1.txt file2.txt file3.txt file4.txt file5.txt .file6.txt
6 #提示:
7 #加了-a参数,就会把以“.”(点号)开头的内容显示出来了,这里显示的第一个点号,表示当前目录,即test目录本身,而两个点号则表示当前目录的上级目录,此处就代表根目录了。有关一个点、两个点的知识,在后面的ln命令中会有详细讲解
8 [root@test-1 test]# ls -A #列出所有文件,包括隐藏文件,但不包括 “.” 与 “..”这两个目录
9 dir1 dir2 dir3 dir4 dir5 file1.txt file2.txt file3.txt file4.txt file5.txt .file6.txt

1.3 案例3:使用-l参数显示详细信息

[root@test-1 test]# ls -l      #此处的时间属性列默认显示的是文件的最后一次修改时间
total 0
drwxr-xr-x 2 root root 6 Sep 21 07:06 dir1
drwxr-xr-x 2 root root 6 Sep 21 07:06 dir2
drwxr-xr-x 2 root root 6 Sep 21 07:06 dir3
drwxr-xr-x 2 root root 6 Sep 21 07:06 dir4
drwxr-xr-x 2 root root 6 Sep 21 07:06 dir5
-rw-r--r-- 1 root root 0 Sep 21 07:06 file1.txt
-rw-r--r-- 1 root root 0 Sep 21 07:06 file2.txt
-rw-r--r-- 1 root root 0 Sep 21 07:06 file3.txt
-rw-r--r-- 1 root root 0 Sep 21 07:06 file4.txt
-rw-r--r-- 1 root root 0 Sep 21 07:06 file5.txt
#提示:
#说明:这个-l参数是最常用的参数了,意思是用长格式列出目录下的文件类型、权限、连接数、属主、属组及创建修改时间的信息。这里每个列的属性含义都需要熟练掌握,后文会详细说明这些属性信息

可能有人已经注意到了,创建或修改时间的格式没有年份的信息,那么如何显示时间全部信息呢,请看案例4

1.4 案例4:显示完整时间属性的参数 --time-style=long-iso

 1 [root@test-1 test]# ls -l --time-style=long-iso    #以long-iso方式显示时间
2 total 0
3 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir1
4 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir2
5 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir3
6 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir4
7 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir5
8 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file1.txt
9 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file2.txt
10 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file3.txt
11 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file4.txt
12 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file5.txt
13
14 #提示:这样的时间格式看起来是不是总让人感到心情舒畅呢,关于--time-style的其他可选参数,请大家自行测试

对于上面的命令,说明如下:

  1)--time-style 可选的参数值有如下几个,如full-iso、long-iso、iso、locale。默认值是locale

  2)在生产场景中经常会遇到同一个目录下的文件及目录时间的显示不一致的问题,所以需要使用 ls -l --time-style=long-iso 来调整,如果觉得参数太多不好记,则可以设置一个别名管理,见后文的alias命令

  3)值得一提的是,执行ls -l等命令时,默认显示的是文件最后一次的修改时间(如果是新文件那么就是创建时间了)

  4)ls --full-time用于显示完整时间,等同于ls -l --time-style=full-iso

    既然ls -l输出结果的时间属性列为修改时间,那么能否改成其他的时间,例如:显示最后一次文件访问时间,这当然也是可以的,具体请参考案例5

1.5 案例5:执行ls命令,带显示内容的访问时间属性的参数

 1 [root@test-1 test]# stat file1.txt              #显示文件的属性及状态信息,
2 File: ‘file1.txt’
3 Size: 0 Blocks: 0 IO Block: 4096 regular empty file
4 Device: fd00h/64768d Inode: 100825163 Links: 1
5 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
6 Access: 2019-09-21 07:06:01.923683869 -0400 #这里就是文件的访问时间,是我们现在需要关注的
7 Modify: 2019-09-21 07:06:01.923683869 -0400
8 Change: 2019-09-21 07:06:01.923683869 -0400
9 Birth: -
10 [root@test-1 test]# date #查看当前系统时间
11 Sat Sep 21 07:51:47 EDT 2019
12 [root@test-1 test]# cat file1.txt #查看文件内容即表示访问了文件,
13 [root@test-1 test]# stat file1.txt #重新查看文件的访问时间
14 File: ‘file1.txt’
15 Size: 0 Blocks: 0 IO Block: 4096 regular empty file
16 Device: fd00h/64768d Inode: 100825163 Links: 1
17 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
18 Access: 2019-09-21 07:52:12.945530547 -0400 #可以发现file1.txt的访问时间已经发生了变化
19 Modify: 2019-09-21 07:06:01.923683869 -0400
20 Change: 2019-09-21 07:06:01.923683869 -0400
21 Birth: -
22 [root@test-1 test]# ls -l --time-style=long-iso --time=atime #增加--time=atime参数,显示访问时间
23 total 0
24 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir1
25 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir2
26 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir3
27 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir4
28 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir5
29 -rw-r--r-- 1 root root 0 2019-09-21 07:52 file1.txt #文件的时间列确实发生了改变,是前面的访问的时间无疑
30 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file2.txt
31 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file3.txt
32 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file4.txt
33 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file5.txt
34 [root@test-1 test]# ls -l --time-style=long-iso
35 total 0
36 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir1
37 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir2
38 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir3
39 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir4
40 drwxr-xr-x 2 root root 6 2019-09-21 07:06 dir5
41 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file1.txt #这里是文件的默认修改时间列
42 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file2.txt
43 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file3.txt
44 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file4.txt
45 -rw-r--r-- 1 root root 0 2019-09-21 07:06 file5.txt

提示:通过上面实践,可以得出结论了,--time=atime显示的确实是访问时间,而非默认的修改时间。

对于上的命令,需要说明如下两点

  1)与之相关命令还有ls -l --time-style=long-iso --time=ctime,用于显示文件改变的时间

  2)有关文件时间列及mtime、atime、ctime的知识,touch命令时已经写出来了

1.6 案例6:执行ls 命令,带 -F参数(这一点和tree命令有点类似)

 1 [root@test-1 test]# ls -F    # -F 我们可以清晰的看到所有的目录的结尾都被加上了斜线 "/"
2 dir1/ dir2/ dir3/ dir4/ dir5/ file1.txt file2.txt file3.txt file4.txt file5.txt
3 [root@test-1 test]# ls -F |grep / #过滤目录
4 dir1/
5 dir2/
6 dir3/
7 dir4/
8 dir5/
9 [root@test-1 test]# ls -F |grep -v / #排除所有目录,过滤出文件
10 file1.txt
11 file2.txt
12 file3.txt
13 file4.txt
14 file5.txt

ls: 显示目下的内容及相关属性信息的更多相关文章

  1. ls 显示目录下的内容和文件相关属性信息

    1.命令功能 ls命令是“list directory contents”,显示当前目录下的内容和文件属性. 2.语法格式 ls  [option]  file ls  选项  文件名 3.选项说明 ...

  2. Salesforce LWC学习(三十四) 如何更改标准组件的相关属性信息

    本篇参考: https://www.cnblogs.com/zero-zyq/p/14548676.html https://www.lightningdesignsystem.com/platfor ...

  3. Activity Intent Flags及Task相关属性

    转自http://www.cnblogs.com/lwbqqyumidi/p/3775479.html 今天我们来讲一下Activity的task相关内容. 上次我们讲到Activity的四种启动模式 ...

  4. css中的字体及文本相关属性

    css中的字体及文本相关属性 1.字体相关属性 字体主要可以设置color.font-family.font-size.font-size-adjust.font-stretch.font-style ...

  5. Android总结篇系列:Activity Intent Flags及Task相关属性

    同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http://blog.csdn.net/liuhe688/article/details/6761337 ...

  6. IOS开发UI基础UITextView相关属性

    UITextView相关属性 •    text: 设置textView中文本_textView.text = @"Now is the time for all good develope ...

  7. IOS开发UI基础UITextFidle相关属性

    UITextFidle相关属性 •    enablesReturnKeyAutomatically默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的. ...

  8. UILabel的相关属性设置

    在iOS编程中UILabel是一个常用的控件,下面分享一下UILabel的相关属性设置的方法. 很多学习iOS6编程都是从storyboard开始,用到UILabel时是将控件拖到storyboard ...

  9. 【转】Android总结篇系列:Activity Intent Flags及Task相关属性

    [转]Android总结篇系列:Activity Intent Flags及Task相关属性 同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http:// ...

随机推荐

  1. 深入了解Netty【三】Netty概述

    1.简介 Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. Netty是一个NIO客户端服务器框架,它支持快速.简单地开发协议服务器和客户端等网络应用程序 ...

  2. 【Azure DevOps系列】Azure DevOps构建并发布Nuget程序包

    在Azure DevOps中,管道可以用来构建解决方案,O(∩_∩)O哈哈~快万能了,本章主要介绍如何创建Nuget包并且将其发布到Nuget服务器的过程. 前面我创建了一个非常简单的类库,这边我不做 ...

  3. vue require.context自动化导入

    语法: require.context(directory, useSubdirectories = false, regExp = /^.//); directory {String} -读取文件的 ...

  4. vant ui TabBar封装

    TabBar.vue基本上是放在App.vue里面,都存在 <template> <div id="app"> <home-tab-bar :tar- ...

  5. 0vscode基本插件

    Bracket Pair Colorizer auto-close-tag Auto Rename Tag Bracket Pair Colorizer Dracula ESLint  Code Sp ...

  6. JVM执行子程序

    Class文件结构 计算机只认识0和1,这个称之为本地机器NativeCode Jvm的无关性 与平台无关性是建立在操作系统上,虚拟机厂商提供了许多可以运行在各种不同平台的虚拟机,它们都可以载入和执行 ...

  7. get_started_3dsctf_2016

    题外:这道题不是很难,但是却难住了我很久.主要是在IDA中查看反编译出的伪代码时双击了一下gets()函数,结果进入gets函数内部,我当时就懵了,误以为这是一个自定义函数,但是自定义函数应该应该不能 ...

  8. WinDbg排查CPU高的问题

    一.概述 在Window服务器部署程序后,可能因为代码的不合理或者其他各种各样的问题,会导致CPU暴增,甚至达到100%等情况,严重危及到服务器的稳定以及系统稳定,但是一般来说对于已发布的程序,没法即 ...

  9. redis加固:修改默认端口6379、密码不为空、内网服务器访问

    一.windows下redis加固: 1.修改redis密码+修改redis端口 1.1.找到服务当中redis的属性配置文件是哪个   这个是我的"D:\Program Files\Red ...

  10. 装个Mysql怎么就这么难?

    2020/5/20 程序员是没有女朋友的~~ 声明:这篇文章是我第一次安装MySQL,主要记录了安装的艰辛过程,内容很凌乱,不适合作为参考. CentOS 6.10安装MySQL一直出问题,换了各种不 ...