前言
ls(list directory contents,列出目錄內容)命令是linux最常用的命令之一,通過man ls可以看到,ls的參數很多,但是本文不准備列出或者介紹這些參數的具體含義或用法,而是挑選一些實際應用中最常見的用法。
介紹之前
在介紹之前,先說明以下幾點:
- . 代表當前目錄
- ..代表上一級目錄,當前目錄為根目錄時,..與.相同
- 以.開頭的文件為隱藏文件
- 有類似a->b的為鏈接文件,在文件權限列的開頭是l
- 文件或目錄名由除”/“和空字符“\0”之外的任意字符序列組成
使用ls -l命令列出文件后,有9列,每一列含義如下:
- 1.文件權限
- 2.連接數
- 3.文件所有者
- 4.文件所屬組
- 5.文件大小
- 6.7.8列,文件最后修改時間
- 9.文件名
下面開始介紹一些常見用法
列出當前目錄文件名
1 |
ls #列出當前目錄文件名,不包括隱藏文件,且無法看到符號鏈接鏈向的文件 |
以易讀方式列出當前目錄文件大小
相關參數-h(human-readable),如下所示,文件大小不以初始字節顯示,而是以k或者M為單位顯示。
1 |
ls -lh |
遞歸列出當前目錄以及子目錄的文件
相關參數-R(recursive)。
1 |
ls -lR |
但是這樣列出來的內容可讀性較差,可參考后面的使用。
列出特定目錄下的文件
參數與前面類似,最后再跟上目錄名,例如:
1 |
ls -a test |
列出符合條件的文件
參數與前面類似,最后跟上條件,例如列出所有以te開頭的文件:
1 |
ls -al te* |
按指定順序列出文件
列出時,也可以按照指定字段排序列出,同樣還可以配合前面的參數一起使用,例如:
1 |
ls -lt #按文件修改時間排序 |
計算目錄下的文件或目錄數量
先介紹以下文件權限列,文件權限列的開頭代表了文件類型:
- l 鏈接文件
- d 目錄
- - 普通文件
下面命令中^-的含義為,以-開頭的字符,有興趣的可以學習更多正則表達式的使用,這里不再贅述。1
2
3
4ls -l | grep "^-" | wc -l #計算當前目錄下文件數量
ls -lR | grep "^-" | wc -l #包括子目錄
ls -lR | grep "^d" | wc -l #計算當前目錄下的目錄數量,且不包括.和..
ls -lR | grep "^l" | wc -l #計算當前目錄下的鏈接數量
列出目錄下部分文件
當目錄下文件較多時,可以結合more命令,只顯示部分,例如:
1 |
ls -al|more |
列出目錄下所有文件的完整路徑
例如,列出LTE目錄下所有文件完整路徑,$9代表第9列,即文件名,-R,遞歸子目錄。
1 |
ls -lR |grep '^-' |awk '{print "/LTE/" $9}' |
^-也可以改為以下幾種:
- ^l 列出目錄下所有鏈接
- ^[-l] 列出目錄下所有文件和鏈接
- ^d 列出目錄下所有目錄
總結
ls命令是linux最常見的命令之一,以上用法在實際應用中基本能夠滿足日常需求,更多參數或使用方法可使用命令man ls查看。