find是Unix/Linux命令行工具箱中最棒的工具之一,該命令對于編寫shell腳本所起到的功用不可小視。
工作方式
find命令的工作方式如下:沿著文件層次結(jié)構(gòu)向下遍歷,匹配符合條件的文件,執(zhí)行相應(yīng)的操作。
使用方法
$ find base_path
base_path可以是任意路徑(例如/home/slynux),find會從該位置開始向下查找。
$ find . -print
# 打印文件和目錄的列表
.指定當(dāng)前目錄,..指定父目錄。這是Unix文件系統(tǒng)中的約定用法。
-print指明打印出匹配文件的文件名(路徑)。
根據(jù)文件名或正則表達(dá)式進(jìn)行搜索
選項(xiàng)-name的參數(shù)指定了文件名所必須匹配的字符串。我們可以將通配符作為參數(shù)使用。*.txt能夠匹配所有以.txt結(jié)尾的文件名。
$ find /home/slynux -name "*.txt" -print
find命令有一個(gè)選項(xiàng) -iname(忽略字母大小寫),該選項(xiàng)的作用和 -name類似,只不過在匹配名字時(shí)會忽略大小寫。
否定參數(shù)
find也可以用“!”否定參數(shù)的含義。例如:
$ find . ! -name "*.txt" -print
根據(jù)文件類型搜索
Unix類系統(tǒng)將一切都視為文件。文件具有不同的類型,例如普通文件、目錄、字符設(shè)備、塊設(shè)備、符號鏈接、硬鏈接、套接字以及FIFO等。
-type可以對文件搜索進(jìn)行過濾。借助這個(gè)選項(xiàng),我們可以為find命令指明特定的文件匹配類型。
例如,只列出所有的目錄:
$ find . -type d -print
文件類型與類型參數(shù)對照表
| 文件類型 | 類型參數(shù) |
|---|---|
| 普通文件 | f |
| 符號鏈接 | l |
| 目錄 | d |
| 字符設(shè)備 | c |
| 塊設(shè)備 | b |
| 套接字 | s |
| FIFO | p |