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]# ll `find . -type 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來過濾。不過可以注意看下我上面的軟鏈接目錄后面未帶上/號,如果帶上/的話也就不存在這個問題了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM