1. 程式人生 > >Linux常用命令系列——文件和目錄操作命令(ls)

Linux常用命令系列——文件和目錄操作命令(ls)

4.3 data 字段 符號鏈接 功能 數值 sdp 用戶 不同

文章目錄:

    • 1.語法
    • 2.選項
    • 3.參數
    • 4.實例
    • 5.ls -F命令的擴展知識
    • 6.ls 命令輸出內容的屬性

ls命令

ls(可以理解為list的縮寫)命令,其功能是顯示目錄下的內容及其相關屬性信息,在Linux中是使用率較高的命令。

1.語法

ls [選項] [參數]

2.選項

    • -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]:使用不同的顏色高亮顯示不同類型的。

3.參數

目錄:指定要顯示列表的目錄,也可以是具體的文件。

4.實例

4.1 顯示當前目錄下非隱藏文件與目錄

[root@localhost data]# ls
dir1  dir2  dir3  file1.txt  file2.txt  file3.txt

4.2 顯示當前目錄下包括隱藏文件在內的所有文件列表

[root@localhost data]# ls -a
.  ..  dir1  dir2  dir3  file1.txt  file2.txt  file3.txt  .file4

4.3 輸出長格式列表

可以簡單理解為將文件或目錄以一行一個的方式顯示出來。

[root@localhost data]# ls -1
dir1
dir2
dir3
file1.txt
file2.txt
file3.txt

4.4 列出文件和文件夾的詳細信息

ls -l也可簡寫為ll。

[root@localhost data]# ls -l
total 12
drwxr-xr-x 2 root root 4096 Feb  9 18:08 dir1
drwxr-xr-x 2 root root 4096 Feb  9 18:08 dir2
drwxr-xr-x 2 root root 4096 Feb  9 18:08 dir3
-rw-r--r-- 1 root root    0 Feb  9 18:10 file1.txt
-rw-r--r-- 1 root root    0 Feb  9 18:10 file2.txt
-rw-r--r-- 1 root root    0 Feb  9 18:10 file3.txt

4.5 顯示文件的inode信息

索引節點(index inode簡稱為“inode”)是Linux中一個特殊的概念,具有相同的索引節點號的兩個文本本質上是同一個文件(除文件名不同外)。

[root@localhost data]# ls -il
total 12
919809 drwxr-xr-x 2 root root 4096 Feb  9 18:08 dir1
919810 drwxr-xr-x 2 root root 4096 Feb  9 18:08 dir2
919811 drwxr-xr-x 2 root root 4096 Feb  9 18:08 dir3
919812 -rw-r--r-- 1 root root    0 Feb  9 18:10 file1.txt
919813 -rw-r--r-- 1 root root    0 Feb  9 18:10 file2.txt
919814 -rw-r--r-- 1 root root    0 Feb  9 18:10 file3.txt

4.6 水平輸出文件列表

[root@localhost data]# ls -m
dir1, dir2, dir3, file1.txt, file2.txt, file3.txt

4.7 用文件和目錄的更改時間排序

[root@localhost data]# ls -t
file2.txt  dir1  file1.txt  file3.txt  dir2  dir3

4.8 顯示遞歸文件

[root@localhost data]# ls -R
.:
dir1  dir2  dir3  file1.txt  file2.txt  file3.txt

./dir1:
test

./dir2:

./dir3:

4.9 打印文件的UID和GID

[root@localhost data]# ls -n
total 12
drwxr-xr-x 2 0 0 4096 Feb  9 19:03 dir1
drwxr-xr-x 2 0 0 4096 Feb  9 18:08 dir2
drwxr-xr-x 2 0 0 4096 Feb  9 18:08 dir3
-rw-r--r-- 1 0 0    0 Feb  9 19:02 file1.txt
-rw-r--r-- 1 0 0    0 Feb  9 19:03 file2.txt
-rw-r--r-- 1 0 0    0 Feb  9 18:10 file3.txt

4.10 列出可讀文件和文件夾詳細信息

[root@localhost data]# ls -lh
total 12K
drwxr-xr-x 2 root root 4.0K Feb  9 19:03 dir1
drwxr-xr-x 2 root root 4.0K Feb  9 18:08 dir2
drwxr-xr-x 2 root root 4.0K Feb  9 18:08 dir3
-rw-r--r-- 1 root root    0 Feb  9 19:02 file1.txt
-rw-r--r-- 1 root root    0 Feb  9 19:03 file2.txt
-rw-r--r-- 1 root root    0 Feb  9 18:10 file3.txt

4.11 顯示目錄信息

[root@localhost data]# ls -ld dir1/
drwxr-xr-x 2 root root 4096 Feb  9 19:03 dir1/

4.12 以文件名反序排列

[root@localhost data]# ls -r
file3.txt  file2.txt  file1.txt  dir3  dir2  dir1

4.13 查找最近更新過的文件

[root@localhost data]# ls -lrt|tail -1
-rw-r--r-- 1 root root    0 Feb  9 19:03 file2.txt

4.14 顯示完整時間屬性

[root@localhost data]# ls -l --time-style=long-iso
total 12
drwxr-xr-x 2 root root 4096 2018-02-09 19:03 dir1
drwxr-xr-x 2 root root 4096 2018-02-09 18:08 dir2
drwxr-xr-x 2 root root 4096 2018-02-09 18:08 dir3
-rw-r--r-- 1 root root    0 2018-02-09 19:02 file1.txt
-rw-r--r-- 1 root root    0 2018-02-09 19:03 file2.txt
-rw-r--r-- 1 root root    0 2018-02-09 18:10 file3.txt
    • --time-style可選的參數值有如下幾個,如full-iso、long-iso、iso、locale。默認值是locale。
    • 在生產場景中經常會遇到同一目錄下的文件及目錄時間的顯示不一致的問題,所以需要用ls -l --time-style=long-iso來調整,如果覺得參數太多不好記,則可以設置一個別名管理。
    • 值得一提的是,執行ls -l等命令時,默認顯示的是文件最後一次的修改時間(如果是新文件那麽就是創建時間了)。
    • ls --full-time用於顯示完整的時間,等同於ls -l --time-style=full-iso。

4.15 顯示文件或目錄的訪問時間

[root@localhost data]# ls -l --time-style=long-iso --time=atime
total 12
drwxr-xr-x 2 root root 4096 2018-02-09 19:04 dir1
drwxr-xr-x 2 root root 4096 2018-02-09 18:10 dir2
drwxr-xr-x 2 root root 4096 2018-02-09 18:10 dir3
-rw-r--r-- 1 root root    0 2018-02-09 19:02 file1.txt
-rw-r--r-- 1 root root    0 2018-02-09 19:03 file2.txt
-rw-r--r-- 1 root root    0 2018-02-09 18:10 file3.txt

與之相關的命令還有ls -l --time-style=long-iso --time=ctime,用於顯示文件改變的時間。

4.16 按照特殊字符對文件進行分類

[root@localhost data]# ls -F
dir1/  dir2/  dir3/  file1.txt  file2.txt  file3.txt

5.ls -F命令的擴展知識

從前面的範例可以看到,目錄的結尾加上了斜線(/),若是其他類型的文件,就不是加斜線了,而是別的符號。

(1)「*」表示可執行的普通文件

[root@localhost data]# ls -F
1.sh*  dir1/  dir2/  dir3/  file1.txt  file2.txt  file3.txt

(2)「/」表示目錄

[root@localhost data]# ls -F
1.sh*  dir1/  dir2/  dir3/  file1.txt  file2.txt  file3.txt

(3)「=」表示套接字(sockets)

[root@localhost data]# find / -type s -exec ls -lF {} \;
srwxrwxrwx 1 root root 0 Feb  9 17:09 /var/run/dbus/system_bus_socket=
srwxr-xr-x 1 root root 0 Feb  9 17:09 /var/run/portreserve/socket=
srw-rw-rw- 1 root root 0 Feb  9 17:09 /var/run/abrt/abrt.socket=
srw-rw-rw- 1 root root 0 Feb  9 17:08 /var/run/vmware/guestServicePipe=
srwxrwxrwx 1 root root 0 Feb  9 17:09 /var/run/cups/cups.sock=
srw-rw-rw- 1 root root 0 Feb  9 17:09 /var/run/sdp=
srw-rw-rw- 1 root root 0 Feb  9 17:09 /var/run/rpcbind.sock=
srw-rw-rw- 1 root root 0 Feb  9 17:09 /var/run/acpid.socket=

(4)「|」表示FIFOS

[root@localhost data]# find / -type p -exec ls -lF {} \;
prw------- 1 root root 0 Feb  9 17:09 /var/run/autofs.fifo-net|
prw------- 1 root root 0 Feb  9 17:09 /var/run/autofs.fifo-misc|

(5)「@」表示符號鏈接

[root@localhost data]# ls -lF /bin/sh 
lrwxrwxrwx. 1 root root 4 Dec  5 22:21 /bin/sh -> bash*

還有個類似的選項「-p」,它的功能比較簡單,只是在目錄後面加上「/」。

6.ls 命令輸出內容的屬性

[root@localhost data]# ls -lhi
total 12K
916490 -rwxr-xr-x 1 root root    0 Feb 18 23:52 1.sh
919809 drwxr-xr-x 2 root root 4.0K Feb  9 19:03 dir1
919810 drwxr-xr-x 2 root root 4.0K Feb  9 18:08 dir2
919811 drwxr-xr-x 2 root root 4.0K Feb  9 18:08 dir3
919817 -rw-r--r-- 1 root root    0 Feb  9 19:02 file1.txt
919818 -rw-r--r-- 1 root root    0 Feb  9 19:03 file2.txt
919814 -rw-r--r-- 1 root root    0 Feb  9 18:10 file3.txt

上述命令結果中各列的含義具體如下:

    • 第一列:inode 索引節點編號。
    • 第二列:文件類型及權限(第一個字符為類型,後 9 個字符為文件權限符號)。
    • 第三列:硬鏈接個數(詳細請參看 ln 命令的講解)。
    • 第四列:文件或目錄所屬的用戶(屬主)。
    • 第五列:文件或目錄所屬的組。
    • 第六列:文件或目錄的大小。
    • 第七、八、九列:文件或目錄的修改時間。
    • 第十列:實際的文件名或目錄名。

Linux常用命令系列——文件和目錄操作命令(ls)