• ls 命令详解


            ls 命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。

    一、语法

           ls(选项)(参数)

           ls [OPTION]... [FILE]...

    二、选项

    -a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
    -A:显示除影藏文件“.”和“..”以外的所有文件列表;
    -C:多列显示输出结果。这是默认选项;
    -l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;
    -F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,
    “|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符; -b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出; -c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。
    与“-l”选项连用时,则排序的一句是文件的状态改变时间; -d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表; -f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果; -i:显示文件索引节点号(inode)。一个索引节点代表一个文件; --file-type:与“-F”选项的功能相同,但是不显示“*”; -k:以KB(千字节)为单位显示文件大小; -l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等; -m:用“,”号区隔每个文件和目录的名称; -n:以用户识别码和群组识别码替代其名称; -r:以文件名反序排列并输出目录内容列表; -s:显示文件和目录的大小,以区块为单位; -t:用文件和目录的更改时间排序; -L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录; -R:递归处理,将指定目录下的所有文件及子目录一并处理; --full-time:列出完整的日期与时间; --color[=WHEN]:使用不同的颜色高亮显示不同类型的。

    三、参数

          指定要显示列表的目录,也可以是具体的文件。

    四、简单实例

    显示当前目录下非隐藏文件与目录

    [root@test ~]# ls
    anaconda-ks.cfg  install.log  log    nohup.out   null    scripts.old

    显示当前目录下包括隐藏文件在内的所有文件列表

    [root@test ~]# ls -a
    .   anaconda-ks.cfg  .bash_logout   .bashrc  install.log         .mysql_history  satools  .tcshrc   .vimrc
    ..  .bash_history    .bash_profile  .cshrc   install.log.syslog  .rnd            .ssh     .viminfo

    输出长格式列表(即一行一个文件或目录)

    [root@test ~]# ls -1
    anaconda-ks.cfg
    install.log
    install.log.syslog
    log

    显示文件的 inode 信息

          索引节点(index node 简称为“inode”)是Linux中一个特殊的概念,具有相同的索引节点号的两个文本本质上是同一个文件(除文件名不同外)。

    [root@test ~]# ls -i -l anaconda-ks.cfg install.log.syslog 
    11948650 -rw------- 1 root root 1673 Aug  8  2016 anaconda-ks.cfg
    11948643 -rw-r--r-- 1 root root 5296 Aug  8  2016 install.log.syslog

    水平输出文件列表

    [root@test /]# ls -m
    bin, boot, dev, etc, home, lib, lib64, local, lost+found, media, misc, mnt, net, opt, php, proc, root, sbin, selinux, soft, srv, sys,
    tftpboot, tmp, usr, var

    显示最近修改的文件在最上面

    [root@test /]# ls -t
    tmp  root  etc  dev  lib  boot  sys  proc  data  home  bin  sbin  usr  var  lost+found  media  mnt  opt  selinux  srv  misc

    显示递归文件

    [root@test ~]# ls -R
    .:
    anaconda-ks.cfg  install.log  install.log.syslog  satools
    
    ./satools:
    black.txt  freemem.sh  iptables.sh  lnmp.sh  mysql  php502_check.sh  ssh_safe.sh

    打印文件的UID和GID

    [root@test /]# ls -n
    total 254
    drwxr-xr-x   2 0 0  4096 Jun 12 04:03 bin
    drwxr-xr-x   4 0 0  1024 Jun 15 14:45 boot
    drwxr-xr-x   6 0 0  4096 Jun 12 10:26 data
    drwxr-xr-x  10 0 0  3520 Sep 26 15:38 dev
    drwxr-xr-x  75 0 0  4096 Oct 16 04:02 etc
    drwxr-xr-x   4 0 0  4096 Jun 12 10:26 home
    drwxr-xr-x  14 0 0 12288 Jun 16 04:02 lib
    drwx------   2 0 0 16384 Jun 11 22:46 lost+found
    drwxr-xr-x   2 0 0  4096 May 11  2011 media
    drwxr-xr-x   2 0 0  4096 Nov  8  2010 misc
    drwxr-xr-x   2 0 0  4096 May 11  2011 mnt
    drwxr-xr-x   2 0 0  4096 May 11  2011 opt
    dr-xr-xr-x 232 0 0     0 Jun 15 11:04 proc
    drwxr-x---   4 0 0  4096 Oct 15 14:43 root
    drwxr-xr-x   2 0 0 12288 Jun 12 04:03 sbin
    drwxr-xr-x   2 0 0  4096 May 11  2011 selinux
    drwxr-xr-x   2 0 0  4096 May 11  2011 srv
    drwxr-xr-x  11 0 0     0 Jun 15 11:04 sys
    drwxrwxrwt   3 0 0 98304 Oct 16 08:45 tmp
    drwxr-xr-x  13 0 0  4096 Jun 11 23:38 usr
    drwxr-xr-x  19 0 0  4096 Jun 11 23:38 var

    打印文件和文件夹的详细信息

    [root@test /]# ls -l
    total 254
    drwxr-xr-x   2 root root  4096 Jun 12 04:03 bin
    drwxr-xr-x   4 root root  1024 Jun 15 14:45 boot
    drwxr-xr-x   6 root root  4096 Jun 12 10:26 data
    drwxr-xr-x  10 root root  3520 Sep 26 15:38 dev
    drwxr-xr-x  75 root root  4096 Oct 16 04:02 etc
    drwxr-xr-x   4 root root  4096 Jun 12 10:26 home
    drwxr-xr-x  14 root root 12288 Jun 16 04:02 lib
    drwx------   2 root root 16384 Jun 11 22:46 lost+found
    drwxr-xr-x   2 root root  4096 May 11  2011 media
    drwxr-xr-x   2 root root  4096 Nov  8  2010 misc
    drwxr-xr-x   2 root root  4096 May 11  2011 mnt
    drwxr-xr-x   2 root root  4096 May 11  2011 opt
    dr-xr-xr-x 232 root root     0 Jun 15 11:04 proc
    drwxr-x---   4 root root  4096 Oct 15 14:43 root
    drwxr-xr-x   2 root root 12288 Jun 12 04:03 sbin
    drwxr-xr-x   2 root root  4096 May 11  2011 selinux
    drwxr-xr-x   2 root root  4096 May 11  2011 srv
    drwxr-xr-x  11 root root     0 Jun 15 11:04 sys
    drwxrwxrwt   3 root root 98304 Oct 16 08:48 tmp
    drwxr-xr-x  13 root root  4096 Jun 11 23:38 usr
    drwxr-xr-x  19 root root  4096 Jun 11 23:38 var

    列出可读文件和文件夹的详细信息

    [root@test /]# ls -lh
    total 254K
    drwxr-xr-x   2 root root 4.0K Jun 12 04:03 bin
    drwxr-xr-x   4 root root 1.0K Jun 15 14:45 boot
    drwxr-xr-x   6 root root 4.0K Jun 12 10:26 data
    drwxr-xr-x  10 root root 3.5K Sep 26 15:38 dev
    drwxr-xr-x  75 root root 4.0K Oct 16 04:02 etc
    drwxr-xr-x   4 root root 4.0K Jun 12 10:26 home
    drwxr-xr-x  14 root root  12K Jun 16 04:02 lib
    drwx------   2 root root  16K Jun 11 22:46 lost+found
    drwxr-xr-x   2 root root 4.0K May 11  2011 media
    drwxr-xr-x   2 root root 4.0K Nov  8  2010 misc
    drwxr-xr-x   2 root root 4.0K May 11  2011 mnt
    drwxr-xr-x   2 root root 4.0K May 11  2011 opt
    dr-xr-xr-x 235 root root    0 Jun 15 11:04 proc
    drwxr-x---   4 root root 4.0K Oct 15 14:43 root
    drwxr-xr-x   2 root root  12K Jun 12 04:03 sbin
    drwxr-xr-x   2 root root 4.0K May 11  2011 selinux
    drwxr-xr-x   2 root root 4.0K May 11  2011 srv
    drwxr-xr-x  11 root root    0 Jun 15 11:04 sys
    drwxrwxrwt   3 root root  96K Oct 16 08:49 tmp
    drwxr-xr-x  13 root root 4.0K Jun 11 23:38 usr
    drwxr-xr-x  19 root root 4.0K Jun 11 23:38 var

    显示文件夹信息

    [root@test /]# ls -ld /etc/
    drwxr-xr-x 109 root root 12288 Mar 16 04:02 /etc/

    按时间顺序列出文件和文件夹的详细信息

    [root@test /]# ls -lt
    total 5034
    drwxrwxrwt   7 root root  212992 Mar  3 15:20 tmp
    drwxr-x---  21 root root 4747264 Mar  3 15:20 root
    drwxr-xr-x 109 root root   12288 Mar  3 09:28 etc
    drwxr-xr-x  11 root root       0 Feb  3 11:04 sys
    dr-xr-xr-x 240 root root       0 Feb  3 11:04 proc
    drwxr-xr-x  11 root root    4120 Feb  3 10:56 dev
    drwxr-xr-x   2 root root       0 Feb  3 10:56 net
    drwxr-xr-x   2 root root       0 Feb  3 10:56 misc
    drwxr-xr-x   2 root root    4096 Feb  3 10:56 media
    drwxr-xr-x   2 root root    4096 Jan 11  2019 bin
    drwxr-xr-x   2 root root   12288 Jan 11  2019 sbin
    drwxr-xr-x  16 root root    4096 Dec 26  2018 soft
    drwxr-xr-x   7 root root    4096 Dec 10  2018 local
    drwxr-xr-x   6 root root    4096 Jan  4  2018 home
    drwxr-xr-x   3 root root    4096 Jun 28  2017 mnt
    drwxr-xr-x   9 root root   12288 Aug 12  2016 lib64
    drwxr-xr-x  11 root root    4096 Aug 12  2016 lib
    drwxr-xr-x   2 root root    4096 Aug 11  2016 php
    drwxr-xr-x  23 root root    4096 Aug  8  2016 var
    drwxr-xr-x   4 root root    1024 Aug  8  2016 boot
    drwxr-xr-x   3 root root    4096 Aug  8  2016 tftpboot
    drwxr-xr-x  15 root root    4096 Aug  8  2016 usr
    drwxr-xr-x   2 root root    4096 Aug  8  2016 selinux
    drwx------   2 root root   16384 Aug  8  2016 lost+found
    drwxr-xr-x   2 root root    4096 May 11  2011 opt
    drwxr-xr-x   2 root root    4096 May 11  2011 srv

    按修改时间列出文件和文件夹的详细信息

    [root@test /]# ls -lrt
    total 5034
    drwxr-xr-x   2 root root    4096 May 11  2011 srv
    drwxr-xr-x   2 root root    4096 May 11  2011 opt
    drwx------   2 root root   16384 Aug  8  2016 lost+found
    drwxr-xr-x   2 root root    4096 Aug  8  2016 selinux
    drwxr-xr-x  15 root root    4096 Aug  8  2016 usr
    drwxr-xr-x   3 root root    4096 Aug  8  2016 tftpboot
    drwxr-xr-x   4 root root    1024 Aug  8  2016 boot
    drwxr-xr-x  23 root root    4096 Aug  8  2016 var
    drwxr-xr-x   2 root root    4096 Aug 11  2016 php
    drwxr-xr-x  11 root root    4096 Aug 12  2016 lib
    drwxr-xr-x   9 root root   12288 Aug 12  2016 lib64
    drwxr-xr-x   3 root root    4096 Jun 28  2017 mnt
    drwxr-xr-x   6 root root    4096 Jan  4  2018 home
    drwxr-xr-x   7 root root    4096 Dec 10  2018 local
    drwxr-xr-x  16 root root    4096 Dec 26  2018 soft
    drwxr-xr-x   2 root root   12288 Jan 11  2019 sbin
    drwxr-xr-x   2 root root    4096 Jan 11  2019 bin
    drwxr-xr-x   2 root root    4096 Feb  3 10:56 media
    drwxr-xr-x   2 root root       0 Feb  3 10:56 misc
    drwxr-xr-x   2 root root       0 Feb  3 10:56 net
    drwxr-xr-x  11 root root    4120 Feb  3 10:56 dev
    dr-xr-xr-x 237 root root       0 Feb  3 11:04 proc
    drwxr-xr-x  11 root root       0 Feb  3 11:04 sys
    drwxr-xr-x 109 root root   12288 Mar  3 09:28 etc
    drwxrwxrwt   7 root root  212992 Mar  3 15:20 tmp
    drwxr-x---  21 root root 4747264 Mar  3 15:21 root

    按特殊字符对文件进行分类

    [root@test ~]# ls -F
    aa               Desktop/    install.log.syslog  netstat.sh*  ntp.sh*  rm.sh*        updateStatus.php.1  wangyue.log
    anaconda-ks.cfg  D_ROOTlog/  log/                nohup.out    null     scripts.old/  UpStatus_rm.sh*

    列出文件并标记颜色分类

    [root@test ~]# ls --color=auto
    aa               Desktop    install.log.syslog  netstat.sh  ntp.sh  rm.sh        updateStatus.php  wangyue.log
    anaconda-ks.cfg  D_ROOTlog  log                 nohup.out   null    scripts.old  UpStatus_rm.sh

    五、实例应用一:列出目录及子目录下的所有软链接

          在服务器上有需要列出某个目录(包括子目录)下的所有软链接信息。主要方法有以下:

    1、使用 ls -lR 命令递归显示目录下的所有文件/文件夹,然后过滤出以 l 开头的文件,此时便列出所有的软链接,如下:

    [root@test html]# ls -lR |grep ^l
    lrwxrwxrwx 1 root root   40 Mar  3 10:59 hb -> /local/server/html/cms/html/hb
    lrwxrwxrwx 1 root root   40 Mar  3 10:59 hk -> /local/server/html/cms/html/hk
    lrwxrwxrwx 1 root root   39 Mar  3 10:59 m -> /local/server/html/cms/html/m
    lrwxrwxrwx 1 root root   44 Mar  3 12:03 uploadfile -> /local/server/html/cms/uploadfile/

    2、使用 find 命令通过 -type 选项指定 l 参数(只显示 link),如下:

    [root@test html]# find . -type l
    ./hk
    ./m
    ./hb
    ./uploadfile

          从上面的效果来看,都能把链接显示出来。但是也有点不够友好,ls方法显示的软链文件未把文件的全路径显示出来。而 find 虽然把文件路径显示出来了,但未显示出足够多的信息。改进一下,在 find 后使用 -ls 命令列出文件或者使用 xargs ls 列出文件能得到比较友好的显示结果。

    [root@test html]# find . -type l | xargs ls -l
    lrwxrwxrwx 1 root root 40 Mar  3 10:59 ./hb -> /local/server/html/cms/html/hb
    lrwxrwxrwx 1 root root 40 Mar  3 10:59 ./hk -> /local/server/html/cms/html/hk
    lrwxrwxrwx 1 root root 39 Mar  3 10:59 ./m -> /local/server/html/cms/html/m
    lrwxrwxrwx 1 root root 44 Mar  3 12:03 ./uploadfile -> /local/server/html/cms/uploadfile/
    
    [root@test html]# find . -type l -ls
    12668935  0 lrwxrwxrwx   1 root  root   40 Mar  3 10:59 ./hk -> /local/server/html/cms/html/hk
    12668930  0 lrwxrwxrwx   1 root  root   39 Mar  3 10:59 ./m -> /local/server/html/cms/html/m
    12668913  0 lrwxrwxrwx   1 root  root   40 Mar  3 10:59 ./hb -> /local/server/html/cms/html/hb
    12668929  0 lrwxrwxrwx   1 root  root   44 Mar  3 12:03 ./uploadfile -> /local/server/html/cms/uploadfile/

           另外如果要显示一个本身就是软链接的目录下的软链接的话,使用上面的方法还会有些问题,如下的软链接直接find显示-type l的时候就不会列出其下面的软链。而针对其它的目录这样是能有效的。这时就需要使用-L选项,但是在使用-L选项之后发现查找出来的链接不完全。这就是文档上说的如果-L生效的话,那么l过滤可能不准确,需要结合使用-xtype选项。如下:

    [root@test data]# file uploads
    uploads: symbolic link to /app/uploads
    [root@test data]# find uploads -type l   
    uploads
    [root@test data]# find -L uploads -type l
    uploads/app/logs
    [root@test data]# find -L uploads -xtype l
    uploads
    uploads/app/logs
    uploads/app/data
    uploads/app/cache
    [root@test data]# find -L uploads -xtype l -ls
     24381761      4 drwxrwxr-x  20 root    root    4096 Dec 30 11:21 uploads
     24514414      0 lrwxrwxrwx   1 root    root    25 Dec 30 11:21 uploads/app/logs -> /app/uploads/logs
     24514416      0 lrwxrwxrwx   1 root    root    25 Dec 30 11:21 uploads/app/data -> /app/uploads/data
     24514412      0 lrwxrwxrwx   1 root    root    26 Dec 30 11:21 uploads/app/cache -> /app/uploads/cache

            find文档:symbolic link l; this is never true if the -L option or the -follow option is in effect, unless the symbolic link  is broken.  If you want to search for symbolic links when -L is in effect, use -xtype。find 命令查找时,l选项有时不一定正确,比如 -L 选项或者 -follow 选项生效的时候,这时就需要使用-xtype l来过滤。不过可以注意看下我上面的软链接目录后面未带上/号,如果带上/的话也就不存在这个问题了。

  • 相关阅读:
    AC自动机
    HDU
    2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II
    POJ 3784 Running Median【维护动态中位数】
    CodeForces
    HDU 2444 The Accomodation of Students【二分图最大匹配问题】
    POJ 1201 Intervals【差分约束】
    POJ 2976 Dropping tests【0/1分数规划模板】
    2019牛客暑期多校训练营(第七场)A.String【最小表示法】
    POJ 1287 Networking【kruskal模板题】
  • 原文地址:https://www.cnblogs.com/morgan363/p/12402364.html
Copyright © 2020-2023  润新知