zoukankan      html  css  js  c++  java
  • ls: 显示目下的内容及相关属性信息

    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
  • 相关阅读:
    java RSA 加签验签【转】
    json遍历 分别使用【原】
    oracle 递归和connect by【转】
    css before after基本用法【转】
    Java Web基础——Action+Service +Dao三层的功能划分
    JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
    UUID
    在ssh框架中service-action-jsp-formbeam-dao的调用顺序
    Singleton模式(单例模式)
    真正理解、区分Action,Service和Dao功能
  • 原文地址:https://www.cnblogs.com/scajy/p/11563055.html
Copyright © 2011-2022 走看看