ls命令常見實用用法(基本操作)


前言

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
2
3
4
5
6
7
ls   #列出當前目錄文件名,不包括隱藏文件,且無法看到符號鏈接鏈向的文件

# -a ALL
ls -a #列出當前目錄下所有文件,包括隱藏文件,當前目錄.以及上一級目錄..
ls -A #列出當前目錄下所有文件,包括隱藏文件,不包括前目錄.以及上一級目錄..

ls -al # 列出當前目錄所有文件,並且使用長格式顯示所有信息,包括權限,大小,用戶,時間等,與ll作用相同

以易讀方式列出當前目錄文件大小

相關參數-h(human-readable),如下所示,文件大小不以初始字節顯示,而是以k或者M為單位顯示。

1
2
3
4
5
6
7
8
ls -lh   
總用量 1.4M
drwxrwxr-x 3 hyb hyb 4.0K 10月 19 2017 Area3
drwxrwxr-x 3 hyb hyb 4.0K 10月 19 2017 home
-rw-r--r-- 1 root root 1.3K 10月 19 2017 home.zip
lrwxrwxrwx 1 hyb hyb 8 9月 13 21:19 test -> home.zip
-rw-rw-r-- 1 hyb hyb 1.3M 9月 16 15:30 test.zip
drwxrwxr-x 2 hyb hyb 4.0K 10月 19 2017 user

 

遞歸列出當前目錄以及子目錄的文件

相關參數-R(recursive)。

1
ls -lR

 

但是這樣列出來的內容可讀性較差,可參考后面的使用。

列出特定目錄下的文件

參數與前面類似,最后再跟上目錄名,例如:

1
2
ls -a test
lrwxrwxrwx 1 hyb hyb 8 9月 13 21:19 test -> home.zip

 

列出符合條件的文件

參數與前面類似,最后跟上條件,例如列出所有以te開頭的文件:

1
2
3
ls -al te*
lrwxrwxrwx 1 hyb hyb 8 9月 13 21:19 test -> home.zip
-rw-rw-r-- 1 hyb hyb 1345047 9月 16 15:30 test.zip

 

按指定順序列出文件

列出時,也可以按照指定字段排序列出,同樣還可以配合前面的參數一起使用,例如:

1
2
3
ls -lt  #按文件修改時間排序
ls -alS #按文件大小排序
ls -X #按擴展名排序

 

計算目錄下的文件或目錄數量

先介紹以下文件權限列,文件權限列的開頭代表了文件類型:

  • l 鏈接文件
  • d 目錄
  • - 普通文件
    下面命令中^-的含義為,以-開頭的字符,有興趣的可以學習更多正則表達式的使用,這里不再贅述。
    1
    2
    3
    4
    ls -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
2
3
4
5
6
7
8
ls -lR |grep '^-' |awk '{print "/LTE/" $9}'
/LTE/1.txt
/LTE/home.zip
/LTE/test.zip
/LTE/qqq.txt
/LTE/test.txt
/LTE/qqq.txt
ls -lR |grep '^-' |awk '{print "/LTE/" $1 " " $9 }' ##打印第一列和第九列

 

^-也可以改為以下幾種:

  • ^l 列出目錄下所有鏈接
  • ^[-l] 列出目錄下所有文件和鏈接
  • ^d 列出目錄下所有目錄

總結

ls命令是linux最常見的命令之一,以上用法在實際應用中基本能夠滿足日常需求,更多參數或使用方法可使用命令man ls查看。


免責聲明!

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



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