Linux中ls命令的用法詳解


一. 目錄結構

使用ls命令我們首先要了解Linux下的目錄結構

Linux系統是由各種文件和目錄構成的,就像Windows系統下文件和文件夾的關系,一級一級的向下包含擴展,例如在根目錄下有binbootdevetchome等目錄而在這些目錄下又包含了其他的文件和目錄,這樣就形成了以根目錄/為根的樹形結構

 

另:每個目錄下都有.”“..”這樣的兩個隱藏文件,“.”表示本文件,“..”表示父目錄

二.  Linux下的文件類型

Linux下一切皆文件 everything is file,包括目錄也是文件的一種而這些文件被分為七種類型:

-:普通文件  

d: 目錄文件

b: 塊設備

c: 字符設備

l: 符號鏈接文件  

p: 管道文件pipe

s: 套接字文件sock

三.Linuxls命令及其常用參數

ls功能: 列出非目錄的文件項,然后是每一個目錄中的“可顯示”文件(可理解為ls命令將本目錄向下展開兩級)

ls用法:ls  [參數]  [目錄名]

        (如過要顯示當前目錄的文件可不加目錄名)

ls常用參數

     -a 顯示所有文件,包含隱藏文件

     -A 顯示所有文件,包含隱藏文件,但不包含...

 -l  顯示為long format(長格式),列出文件的類型、權限、鏈接數、ownergroup、大 小,時間,名字

     -R   

     -d 不展開目錄,只顯示目錄自身,一般與-l配合使用以顯示目錄自身的屬性信息(只顯示當前目錄的內容)

     -1 數字1,成列顯示內容

     -S 以文件大小排序顯示,默認從大到小 -r后,從小到大

     -U 按存放順序排序顯示

     -X 按擴展名的首字母來排序

     -t  mtime排序(先顯示時間最近的)

     -ul  atime排序(先顯示時間最近的)

     -ct  ctime排序(先顯示時間最近的)

          補充:

關於時間戳:

          atime  訪問時間

          mtime 數據修改時間 (寫入,修改數據mtime改變,mtime改變ctime必改變)

          ctime  元數據修改時間 (修改權限的時候只有ctime改變)

          可過stat 文件路徑”查看全部時間戳

 

擴展: 如何通過ls只顯示指定格式的文件

 

首先我們要了解什么是文件名通配符

Shell提供了一套完整的字符串模式匹配規則,或者稱之為元字符,當s h e l l遇到上述字符時,就會把它們當作特殊字符,而不是文件名中的普通字符,這樣用戶就可以用它們來匹配相應的文件名,我理解這可以稱為通配符。

 

常用通配符:

* 匹配0或多個任意字符

? 匹配任意1個字符

[  ]  當中括號內為幾個確定字符時,表示匹配括號內任意一個字符,當中括號內為一個范圍時表示匹配這個范圍中的任意一個字符(中括號表示的是一個范圍,匹配的是一個字符)

例:

  [ab46e] 表示是a,b,4,6,e中的任意一個字符

 [a- z] 表示aAbBcC……zLinux中的默認編碼順序是一個小寫字母一個大寫字母即aAbBcC.....Z

         [A-Z] 表示AbBcC……Z

        [a- Z] 表示所有大小寫字母

        [^ae] 表示即不是a也不是e的其他任意單一字符

[:lower:] 表示一個小寫字母

[:upper:] 表示一個大寫字母

[:alpha:] 表示一個大小寫字母 等同於[a-Z]

[:digit:]  表示任意一個數字 等同於[0-9]

[:alnum:] 表示任意一個字母或數字 等於[a-Z0-9][[:digit:][:alpha:]]

[:blank:]:一個水平空白字符

[:space:]:一個水平或垂直空白字符(文件名不可能包含回車,故此處使用與[:blank:]:效果相同)

[:punct:]: 表示一個符號

 

通過ls命令和通配符查找指定格式的文件:

  格式:ls  [參數]  [目錄名][通配符]

 

以下是一些例子:

1.  查找/usr/share/man 目錄下以m開頭且以一個數字加x結尾的文件

命令:ls  -d  /usr/share/man/m*[0-9]x

運行結果:

 

解釋:-d 只展開一級目錄

      /usr/share/man/  目錄路徑

  m*[0-9]x  m表示以m開頭,[0-9]x表示以數字加x結尾,因為對文件的中間沒

有加以限制所以用*代替中間部分,*表示任意個數的任意字符

 

2.  查找root下的隱藏文件和目錄

      命令: ls   -d  /root/.*

      運行結果:

解釋:-d 只展開一級目錄

      /root 目錄路徑

      因為Linux下以“.”開頭的文件是隱藏文件,所以用“.”加上“*”來表示隱藏文件

3.  查找/etc下所有以k開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件

        命令:ls   -d   /etc/k*[0-9]*[[:lower:]]

        運行結果:

 

解釋:-d 只展開一級目錄

      /etc 目錄路徑

       k表示以k開頭,[0-9]表示一個數字,[[:lower:]]表示一個小寫字母,因為[:lower:]表示為小寫字母,也就是abcdefg...z,所以在[:lower:]外面加

      上[ ]以表示在這寫子母中取任意一個,因為只規定了開頭和結尾,對中間只要求至少出現一位數字,所以中間用*[0-9]*來表示

 

 


免責聲明!

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



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