每天一個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 選項列出文件列表

[root@cent6 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 選項來以易讀方式列出文件

[root@cent6 ~]# 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. 瀏覽隱藏文件

列出所有文件包括以‘.’開頭的隱藏文件。

[root@cent6 ~]# 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 選項,會在每個目錄的末尾添加“/”字符顯示。

[root@cent6 ~]# 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組合選項能按文件從大到小的次序顯示。

[root@cent6 ~]# 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”開頭的目錄和文件的詳細內容

[root@zabbix 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 選項能以倒序方式顯示文件和目錄。

[root@cent6 ~]# ls -r
install.log.syslog  directory  anaconda-ks.cfg

12. 以修改時間列出,最近修改的在上面

[root@cent6 ~]# 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組合選項能以文件或目錄的最新修改時間的次序來顯示它們。

[root@cent6 ~]# 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.指定文件時間輸出格式

[root@zabbix 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

更詳細的時間

[root@zabbix 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 選項能遞歸列出子目錄

[root@cent6 ~]# 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.列出當前目錄下的所有文件(包括隱藏文件)的絕對路徑, 對目錄不做遞歸

[root@zabbix 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.遞歸列出當前目錄下的所有文件(包括隱藏文件)的絕對路徑

[root@zabbix 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中一個特殊的概念,具有相同的索引節點號的兩個文本本質上是同一個文件(除文件名不同外)。

[root@cent6 ~]# ls -i
1058854 anaconda-ks.cfg  1061385 directory  1048579 install.log.syslog

19. 顯示文件的UID和GID

用ls -n命令來顯示文件和目錄的UID和GID(root的均為0)

[root@cent6 ~]# 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. 水平輸出文件列表,以逗號分隔

[root@cent6 ~]# ls -m
anaconda-ks.cfg, directory, install.log.syslog

21. 列出文件並標記顏色分類

[root@cent6 ~]# ls --color=auto
anaconda-ks.cfg  directory  install.log.syslog

22.在ls中列出文件的絕對路徑

[root@zabbix 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


免責聲明!

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



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