find是Unix/Linux命令行工具中最棒的工具之一。該命令對於編寫shell腳本所起到的功能不可小視,可是多數人卻午餐最大程度發揮它的功效,下面介紹find一些常見的用法。正則表達式
1.基本用法:shell
# find base_path
查找base_path路徑下的全部文件。工具
2.根據文件名或者正則表達式進行搜索
參數:spa
-name:指定文件名所必須匹配的字符串,能夠將通配符做爲參數使用。命令行
-iname:與name相似,只是忽略字母大小寫。code
-o:or條件操做,匹配多個條件中的一個ci
-path::使用通配符來匹配文件路徑字符串
!:否認參數含義table
舉例:pdf
find . -name "*.txt"
#查找當前目錄下後綴名爲txt的文件
find . \( -name "*.txt" -o name "*.pdf" \)
#打印出全部.txt和.pdf文件,由於find命令可以匹配全部兩類文件。
#\)以及\)將用於-name "*.txt" -o -name "*.pdf"
find . ! -name "*.txt"
#匹配全部不以.txt結尾的文件名。
3.基於目錄深度的搜索
參數:
-maxdepth:指定最大查找深度,即最大向指定目錄下面搜索maxdepth級
-mindepth:指定最小查找深度,即從指定目錄下面第mindepth級目錄開始搜索
find . -mindepth 2 -name "f*"
4.根據文件類型搜索
Unix類系統都將一切視爲文件。文件具備不一樣的類型,例如普通文件、目錄、字符設備、塊設備、符號連接、硬連接、套接字以及FIFO等。
參數:
-type:找到對應類型的文件
find . -type d
find . -type f
#當前目錄下查找目錄
#當前目錄下查找文件
文件類型 | 類型參數 |
---|---|
普通文件 | f |
符號連接 | l |
目錄 | d |
字符設備 | c |
塊設備 | b |
套接字 | s |
FIFO | p |
5.根據文件時間進行搜索
訪問時間(-atime):用戶最近一次訪問文件的時間
修改時間(-mtime):文件內容最後一次被修改的時間
變化時間(-ctime):文件元數據(例如權限和全部權)最後一次改變的時間
-atime,-mtime,-ctime可做爲find的時間選項。它們能夠用真數值指定,單位是天,"-"表示小於,"+"表示大於。
#打印出最近7天內被訪問過的文件:
find . -type f -atime -7
#打印出剛好7天前被訪問過的全部文件:
find . -type f -atime 7
#打印出訪問時超過7天的全部文件:
find . -type f -atime +7
如下幾個參數是以分鐘爲單位:
-amin
-mmin
-cmin
-newer:指定一個用於比較時間戳的參考文件:
#找出比file.txt修改時間更近的全部文件:
find . -type f -newer file.txt
6.基於文件大小的搜索
根據文件大小能夠這麼搜索:
#找到大於2KB的文件
find . -type f -size +2k
#找到小於2KB的文件
find . -type f -size -2k
#找到大小等於2KB的文件
find . -type f -size 2k
·b------塊(512Bytes)
·c------Byte
·w------word(2Bytes)
·k------1014Bytes
·M-----1024KB
·G------1024MB
7.刪除匹配的文件
#刪除當前目錄下全部的.swp文件:
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腳本攻略》