find命令:文件查找和文件列表

find是Unix/Linux命令行工具中最棒的工具之一。該命令對於編寫shell腳本所起到的功能不可小視,可是多數人卻午餐最大程度發揮它的功效,下面介紹find一些常見的用法。正則表達式

 

1.基本用法:shell

 

# find base_path

查找base_path路徑下的全部文件。工具

 

 

2.根據文件名或者正則表達式進行搜索
參數:
spa

-name:指定文件名所必須匹配的字符串,能夠將通配符做爲參數使用。命令行

-iname:與name相似,只是忽略字母大小寫。code

-o:or條件操做,匹配多個條件中的一個ci

-path::使用通配符來匹配文件路徑字符串

!:否認參數含義table

舉例:pdf

 

 
  1. find . -name "*.txt"

  2. #查找當前目錄下後綴名爲txt的文件

  3.  
  4.  
  5. find . \( -name "*.txt" -o name "*.pdf" \)

  6. #打印出全部.txt和.pdf文件,由於find命令可以匹配全部兩類文件。

  7. #\)以及\)將用於-name "*.txt" -o -name "*.pdf"

  8.  
  9. find . ! -name "*.txt"

  10. #匹配全部不以.txt結尾的文件名。

 

 

3.基於目錄深度的搜索
參數:

-maxdepth:指定最大查找深度,即最大向指定目錄下面搜索maxdepth級

-mindepth:指定最小查找深度,即從指定目錄下面第mindepth級目錄開始搜索

 

find . -mindepth 2 -name "f*"

 

 

4.根據文件類型搜索

Unix類系統都將一切視爲文件。文件具備不一樣的類型,例如普通文件、目錄、字符設備、塊設備、符號連接、硬連接、套接字以及FIFO等。

參數:

-type:找到對應類型的文件

 

 
  1. find . -type d

  2. find . -type f

  3. #當前目錄下查找目錄

  4. #當前目錄下查找文件

文件類型 類型參數
普通文件 f
符號連接 l
目錄 d
字符設備 c
塊設備 b
套接字 s
FIFO p

 

 

5.根據文件時間進行搜索

訪問時間(-atime):用戶最近一次訪問文件的時間

修改時間(-mtime):文件內容最後一次被修改的時間

變化時間(-ctime):文件元數據(例如權限和全部權)最後一次改變的時間

-atime,-mtime,-ctime可做爲find的時間選項。它們能夠用真數值指定,單位是天,"-"表示小於,"+"表示大於。

 

 
  1. #打印出最近7天內被訪問過的文件:

  2. find . -type f -atime -7

  3. #打印出剛好7天前被訪問過的全部文件:

  4. find . -type f -atime 7

  5. #打印出訪問時超過7天的全部文件:

  6. find . -type f -atime +7

如下幾個參數是以分鐘爲單位

 

-amin

-mmin

-cmin

-newer:指定一個用於比較時間戳的參考文件:

 

 
  1. #找出比file.txt修改時間更近的全部文件:

  2. find . -type f -newer file.txt


6.基於文件大小的搜索

 

根據文件大小能夠這麼搜索:

 

 
  1. #找到大於2KB的文件

  2. find . -type f -size +2k

  3. #找到小於2KB的文件

  4. find . -type f -size -2k

  5. #找到大小等於2KB的文件

  6. find . -type f -size 2k

·b------塊(512Bytes)

 

·c------Byte
·w------word(2Bytes)

·k------1014Bytes

·M-----1024KB

·G------1024MB

 

7.刪除匹配的文件

 

 
  1. #刪除當前目錄下全部的.swp文件:

  2. find . -type f -name "*.swp" -delete


8.利用find執行命令或者動做

 

find命令能夠藉助選項-exec與其餘命令進行結合。-exec算得上是find最強大的特性之一。

示例:將給定目錄中的全部C程序文件拼接起來寫入單個文件all_c_files.txt

 

find . -type f -name "*.c" -exec cat {} \; > all_c_files.txt

"{}"是一個與"-exec"選項搭配使用的特殊字符串。對於每個匹配的文件,"{}"會被替換成相應的文件名。
 

 

參考資料:《Linux Shell腳本攻略》

相關文章
相關標籤/搜索