每天一個linux命令(3):ls命令
1、命令簡介
ls(list 列出目錄內容)命令用來列出顯示指定目錄裡的檔案及資料夾清單,預設下ls用來打印出當前目錄的清單。通過ls 命令不僅可以檢視linux資料夾包含的檔案,而且可以檢視檔案許可權、大小、更改時間等等
2、用法
ls [OPTION]... [FILE]...
3、選項
-a 列出目錄下的所有檔案,包括以 . 開頭的隱含檔案。
-A 顯示除“.”和“..”外的所有檔案。
-b 把檔名中不可輸出的字元用反斜槓加字元編號(就象在C語言裡一樣)的形式列出。
-B 不輸出以“~”結尾的備份檔案。
-c 與“-lt”選項連用時,按照檔案狀態時間排序輸出目錄內容,排序的依據是檔案的索引節點中的ctime欄位。與“-l”選項連用時,則顯示狀態改變時間,並以名稱排序;其他根據ctime排揎
-C 多列顯示輸出結果,縱向排序,這是預設選項。
--color顯示彩色檔名 [always|never|auto]
-d 將目錄像檔案一樣顯示,而不是顯示其下的檔案。
-e 輸出時間的全部資訊,而不是輸出簡略資訊。
-f 此引數的效果和同時指定“aU”引數相同,並關閉“lst”引數的效果;
-F 在檔名後附上一個字元以說明該檔案的型別,“*”表示可執行的普通 檔案;“/”表示目錄;“@”表示符號連結;“|”表示FIFOs;“=”表示套接字---g 類似於-l 但是不列出owner。
-G 輸出檔案的組的資訊。
-h 和-l一起,以human-readable的格式輸出大小資訊
-i --inode輸出檔案節點的索引資訊。
-k 以 k 位元組的形式表示檔案的大小。
-l 列出檔案的詳細資訊。
-L 列出連結檔名而不是連結到的檔案。
-m 橫向輸出檔名,並以“,”作分格符。
-n 用數字的 UID,GID 代替名稱。
-N 不限制檔案長度。
-o 顯示檔案的除組資訊外的詳細資訊。
-p 資料夾後新增/
-q 用?代替不可輸出的字元。
-Q 把輸出的檔名用雙引號括起來。
-r 對目錄反向排序。
-R 列出所有子目錄下的檔案。
-s 在每個檔名後輸出該檔案的大小,單位為block。
-S 以檔案大小排序。
-t 以時間排序。
-u 與“-lt”選項連用時,按照訪問時間排序輸出目錄內容。與“-l”選項連用時,則顯示訪問時間,並以名稱排序;其他根據訪問時間排序
-U 對輸出的檔案不排序。
-x 按列輸出,橫向排序。
-X 以檔案的副檔名(最後一個 . 後的字元)排序。
-1 一行只輸出一個檔案。
--help 在標準輸出上顯示幫助資訊。
--version 在標準輸出上輸出版本資訊並退出。
4、例項
1. 不帶任何選項列出檔案
不帶選項的ls命令來光禿禿地列出檔案和目錄,我們是不能看到像檔案型別、大小、修改日期和時間、許可權以及連結這樣具體的資訊的。
[root@cent6 tmp]# ls
hsperfdata_root nginx_log_stat pulse-IhiwHnejlPBk tomcat-redis-session-manager
2. 帶–l 選項列出檔案列表
[[email protected] tmp]# ls -l
total 16
drwxr-xr-x 2 root root 4096 Apr 9 09:01 hsperfdata_root
-rw-r--r--. 1 root root 4 Mar 22 17:58 nginx_log_stat
drwx------. 2 cloud cloud 4096 Feb 16 2015 pulse-IhiwHnejlPBk
drwxr-xr-x. 3 root root 4096 Feb 24 21:32 tomcat-redis-session-manager
可以看到,用ls -l命令檢視某一個目錄會得到一個7個欄位的列表。
第1行:總計(total) Total後面的數字是指當前目錄下所有檔案所佔用的空間總和,單位kb。可以使用ls –lh檢視,
第1欄位: 檔案屬性欄位
檔案屬性欄位總共有10個字母組成;第一個字元代表檔案的型別。
“-”表示該檔案是一個普通檔案
“d”表示該檔案是一個目錄,字母"d",是dirtectory(目錄)的縮寫
“l”表示該檔案是一個連結檔案。字母"l"是link(連結)的縮寫,類似於windows下的快捷方式
“b”的表示塊裝置檔案(block),一般置於/dev目錄下,裝置檔案是普通檔案和程式訪問硬體裝置的入口,是很特殊的檔案。,如硬碟、光碟等。最小資料傳輸單位為一個數據塊(通常一個數據塊的大小為512位元組)
“c”表示該檔案是一個字元裝置檔案(character),一般置於/dev目錄下,一次傳輸一個位元組的裝置被稱為字元裝置,如鍵盤、字元終端等,傳輸資料的最小單位為一個位元組。
“p”表示該檔案為命令管道檔案。與shell程式設計有關的檔案。
“s”表示該檔案為sock檔案。與shell程式設計有關的檔案。
第2欄位:如果是一個檔案,此時這一欄位表示這個檔案所具有的硬連結數;如果是一個目錄,則第2欄位表示該目錄所含子目錄的個數。新建一個空目錄,這個目錄的第二欄位就是2,表示該目錄下有兩個子目錄。為什麼新建的目錄下面會有兩個子目錄呢?因為每一個目錄都有一個指向它本身的子目錄”。” 和指向它上級目錄的子目錄”。。”,
第3欄位:檔案(目錄)擁有者
第4欄位:檔案(目錄)擁有者所在的組
第5欄位: 檔案所佔用的空間(以位元組為單位)
第6欄位:檔案(目錄)最近訪問(修改)時間
第7欄位:檔名
3. 計算當前目錄下的檔案數和目錄數
[root@zabbix zabbix]# ls -l |grep "^d"|wc -l
3
[root@zabbix zabbix]# ls -l |grep "^-"|wc -l
6
4. 用 -lh 選項來以易讀方式列出檔案
[[email protected] ~]# ls -lh
total 16K
-rwxr-xr-x. 1 root root 1.3K Feb 16 2015 anaconda-ks.cfg
-rwxr-xr-x. 1 root root 9.0K Feb 16 2015 install.log.syslog
5. 瀏覽隱藏檔案
列出所有檔案包括以‘.’開頭的隱藏檔案。
[[email protected] ~]# ls -a
. anaconda-ks.cfg .bash_logout .bashrc .cshrc .gconfd install.log.syslog
6. 列出目錄資訊
用ls -l命令列出/tmp目錄下的檔案,其中-ld引數可以只顯示/tmp目錄的資訊。
[root@cent6 ~]# ls -ld /tmp
drwxrwxrwt. 7 root root 4096 Apr 12 20:34 /tmp
7. 以尾部以‘/’字元結尾的方式列出檔案和目錄
使用 ls 命令的 -F 選項,會在每個目錄的末尾新增“/”字元顯示。
[[email protected] ~]# ls -F
anaconda-ks.cfg* directory/ install.log.syslog*
8. 只列出檔案下的子目錄
利用使用-F選項時,目錄以/結尾
[root@zabbix zabbix]# ls -F |grep /$
alertscripts/
web/
zabbix_agentd.d/
利用使用-l選項時,目錄以d開頭
[root@zabbix zabbix]# ls -l |grep "^d"
drwxrwxrwx 2 root root 97 Jan 28 09:23 alertscripts
drwxr-x--- 2 apache apache 54 Feb 17 21:10 web
drwxr-xr-x 2 root root 45 Feb 17 21:10 zabbix_agentd.d
9. 按檔案大小排序
帶-lS組合選項能按檔案從大到小的次序顯示。
[[email protected] ~]# ls -lS
total 20
-rwxr-xr-x. 1 root root 9154 Feb 16 2015 install.log.syslog
drwxr-xr-x 2 root root 4096 Apr 12 21:25 directory
-rwxr-xr-x. 1 root root 1264 Feb 16 2015 anaconda-ks.cfg
10列出當前目錄中所有以“zabbix”開頭的目錄和檔案的詳細內容
[[email protected] zabbix]# ls zabbix*
zabbix_agentd.conf zabbix_java_gateway.conf zabbix_java_gateway_logback.xml zabbix_server.conf zabbix_server.conf_bak zabbix_server.conf.rpmnew_bak
zabbix_agentd.d:
userparameter_mysql.conf
11. 倒序列出檔案
ls -r 選項能以倒序方式顯示檔案和目錄。
[[email protected] ~]# ls -r
install.log.syslog directory anaconda-ks.cfg
12. 以修改時間列出,最近修改的在上面
[[email protected] ~]# ls -lt
total 20
drwxr-xr-x 2 root root 4096 Apr 12 21:25 directory
-rwxr-xr-x. 1 root root 1264 Feb 16 2015 anaconda-ks.cfg
-rwxr-xr-x. 1 root root 9154 Feb 16 2015 install.log.syslog
13. 以修改時間倒序列出
帶-ltr組合選項能以檔案或目錄的最新修改時間的次序來顯示它們。
[[email protected] ~]# ls -ltr
total 20
-rwxr-xr-x. 1 root root 9154 Feb 16 2015 install.log.syslog
-rwxr-xr-x. 1 root root 1264 Feb 16 2015 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Apr 12 21:25 directory
14.指定檔案時間輸出格式
[[email protected] zabbix]# ls -lt --time-style=long-iso
total 68
-rw-r--r-- 1 root root 14938 2016-04-14 11:48 zabbix_server.conf
drwxr-xr-x 2 root root 45 2016-02-17 21:10 zabbix_agentd.d
drwxr-x--- 2 apache apache 54 2016-02-17 21:10 web
-rw-r--r-- 1 root root 10341 2016-02-16 00:16 zabbix_agentd.conf
-rw-r--r-- 1 root root 813 2016-02-16 00:16 zabbix_java_gateway.conf
-rw-r--r-- 1 root root 770 2016-02-16 00:16 zabbix_java_gateway_logback.xml
-rw-r----- 1 root zabbix 14912 2016-02-16 00:16 zabbix_server.conf.rpmnew_bak
-rw-r----- 1 root zabbix 13657 2016-02-04 10:19 zabbix_server.conf_bak
drwxrwxrwx 2 root root 97 2016-01-28 09:23 alertscripts
更詳細的時間
[[email protected] zabbix]# ls -tl --time-style=full-iso
total 68
-rw-r--r-- 1 root root 14938 2016-04-14 11:48:26.231666438 +0800 zabbix_server.conf
drwxr-xr-x 2 root root 45 2016-02-17 21:10:03.471004045 +0800 zabbix_agentd.d
drwxr-x--- 2 apache apache 54 2016-02-17 21:10:00.024943223 +0800 web
-rw-r--r-- 1 root root 10341 2016-02-16 00:16:47.000000000 +0800 zabbix_agentd.conf
-rw-r--r-- 1 root root 813 2016-02-16 00:16:47.000000000 +0800 zabbix_java_gateway.conf
-rw-r--r-- 1 root root 770 2016-02-16 00:16:47.000000000 +0800 zabbix_java_gateway_logback.xml
-rw-r----- 1 root zabbix 14912 2016-02-16 00:16:47.000000000 +0800 zabbix_server.conf.rpmnew_bak
-rw-r----- 1 root zabbix 13657 2016-02-04 10:19:44.837012771 +0800 zabbix_server.conf_bak
drwxrwxrwx 2 root root 97 2016-01-28 09:23:44.034478732 +0800 alertscripts
15. 遞迴列出子目錄
ls -R 選項能遞迴列出子目錄
[[email protected] ~]# ls -lR
.:
total 20
-rwxr-xr-x. 1 root root 1264 Feb 16 2015 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Apr 12 21:25 directory
-rwxr-xr-x. 1 root root 9154 Feb 16 2015 install.log.syslog
./directory:
total 0
-rw-r--r-- 1 root root 0 Apr 12 21:25 subtext.txt
16.列出當前目錄下的所有檔案(包括隱藏檔案)的絕對路徑, 對目錄不做遞迴
[[email protected] zabbix]# find $PWD -maxdepth 1 | xargs ls -ld
drwxr-xr-x 5 root root 4096 Apr 14 11:48 /etc/zabbix
drwxrwxrwx 2 root root 97 Jan 28 09:23 /etc/zabbix/alertscripts
drwxr-x--- 2 apache apache 54 Feb 17 21:10 /etc/zabbix/web
-rw-r--r-- 1 root root 10341 Feb 16 00:16 /etc/zabbix/zabbix_agentd.conf
drwxr-xr-x 2 root root 45 Feb 17 21:10 /etc/zabbix/zabbix_agentd.d
-rw-r--r-- 1 root root 813 Feb 16 00:16 /etc/zabbix/zabbix_java_gateway.conf
-rw-r--r-- 1 root root 770 Feb 16 00:16 /etc/zabbix/zabbix_java_gateway_logback.xml
-rw-r--r-- 1 root root 14938 Apr 14 11:48 /etc/zabbix/zabbix_server.conf
-rw-r----- 1 root zabbix 13657 Feb 4 10:19 /etc/zabbix/zabbix_server.conf_bak
-rw-r----- 1 root zabbix 14912 Feb 16 00:16 /etc/zabbix/zabbix_server.conf.rpmnew_bak
17.遞迴列出當前目錄下的所有檔案(包括隱藏檔案)的絕對路徑
[[email protected] zabbix]# find $PWD | xargs ls -ld
drwxr-xr-x 5 root root 4096 Apr 14 11:48 /etc/zabbix
drwxrwxrwx 2 root root 97 Jan 28 09:23 /etc/zabbix/alertscripts
-rwxrwxrwx 1 root root 2924 Jan 28 09:23 /etc/zabbix/alertscripts/sendim.py
-rwxrwxrwx 1 root root 835 Jan 27 06:51 /etc/zabbix/alertscripts/sendmail.py
-rwxrwxrwx 1 root root 611 Jan 27 06:51 /etc/zabbix/alertscripts/sendsms.sh
-rwxrwxrwx 1 root root 2930 Jan 27 06:51 /etc/zabbix/alertscripts/sendwechat.py
drwxr-x--- 2 apache apache 54 Feb 17 21:10 /etc/zabbix/web
-rw-r--r-- 1 root root 1036 Feb 15 20:25 /etc/zabbix/web/maintenance.inc.php
-rw-r--r-- 1 apache apache 431 Jan 27 06:27 /etc/zabbix/web/zabbix.conf.php
-rw-r--r-- 1 root root 10341 Feb 16 00:16 /etc/zabbix/zabbix_agentd.conf
drwxr-xr-x 2 root root 45 Feb 17 21:10 /etc/zabbix/zabbix_agentd.d
-rw-r--r-- 1 root root 1517 Feb 16 00:16 /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
-rw-r--r-- 1 root root 813 Feb 16 00:16 /etc/zabbix/zabbix_java_gateway.conf
-rw-r--r-- 1 root root 770 Feb 16 00:16 /etc/zabbix/zabbix_java_gateway_logback.xml
-rw-r--r-- 1 root root 14938 Apr 14 11:48 /etc/zabbix/zabbix_server.conf
-rw-r----- 1 root zabbix 13657 Feb 4 10:19 /etc/zabbix/zabbix_server.conf_bak
-rw-r----- 1 root zabbix 14912 Feb 16 00:16 /etc/zabbix/zabbix_server.conf.rpmnew_bak
18. 顯示檔案或目錄的索引節點號
帶-i選項能列出檔案或目錄的索引節點號。索引節點(index inode簡稱為“inode”)是Linux中一個特殊的概念,具有相同的索引節點號的兩個文字本質上是同一個檔案(除檔名不同外)。
[[email protected] ~]# ls -i
1058854 anaconda-ks.cfg 1061385 directory 1048579 install.log.syslog
19. 顯示檔案的UID和GID
用ls -n命令來顯示檔案和目錄的UID和GID(root的均為0)
[[email protected] ~]# ls -n
total 20
-rwxr-xr-x. 1 0 0 1264 Feb 16 2015 anaconda-ks.cfg
drwxr-xr-x 2 0 0 4096 Apr 12 21:25 directory
-rwxr-xr-x. 1 0 0 9154 Feb 16 2015 install.log.syslog
20. 水平輸出檔案列表,以逗號分隔
[[email protected] ~]# ls -m
anaconda-ks.cfg, directory, install.log.syslog
21. 列出檔案並標記顏色分類
[[email protected] ~]# ls --color=auto
anaconda-ks.cfg directory install.log.syslog
22.在ls中列出檔案的絕對路徑
[[email protected] zabbix]# ls | sed "s:^:`pwd`/:"
/etc/zabbix/alertscripts
/etc/zabbix/web
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d
/etc/zabbix/zabbix_java_gateway.conf
/etc/zabbix/zabbix_java_gateway_logback.xml
/etc/zabbix/zabbix_server.conf
/etc/zabbix/zabbix_server.conf_bak
/etc/zabbix/zabbix_server.conf.rpmnew_bak
23. ls命令和它的別名
我們給ls命令設定如下別名之後,當我們執行ls命令的時候它會預設執行-l選項並且像上文提到的那樣顯示長列表。
alias ls="ls -l --color"
unalias ls