linux find 命令
find命令的功能是查詢檔案,但初學者常常覺得其不易使用,這不僅僅是因為它有選項、測試和動作型別的引數,也由於其中一個引數的處理結果可以影響它後續引數的處理。
在深入研究這些選項、測試和引數之前,先看一個簡單的例子,在本地機器上查詢名為wish的檔案,為了確保我們具備搜尋整個機器的許可權而以root使用者身份來執行此命令:
#find / -name wish -print
/usr/bin/wish
上面命令表示從根目錄開始查詢名為wish的檔案並且輸出檔名。
需要注意的是:這個命令的執行需要花費很長時間,如果Linux機器掛載(使用SAMBA)了一大塊Windows機器的檔案系統,網路上的Windows機器的硬碟也會高速轉動,看起來似乎是Windows檔案系統也被檢索了,儘管我們知道要查詢的檔案應該在Linux機器上。
一、選項
上面例子中的問題通過指定選項-mount就能很好的解決,即告訴find命令不要搜尋掛載的目錄:
#find / -mount -name wish -print
這樣我們仍然能找到檔案,但不必再搜尋掛載的其它檔案系統。
find命令的完整語法格式如下:
find [path] [options] [tests] [actions]
path域表示搜尋路徑,可以使用絕對路徑(如:/bin),也可以使用相對路徑(如:.),也可以指定多個路徑(如:find /var /home)。
options域表示選項,有許多選項可用,但主要選項如下:
-depth:在檢視目錄本身之前先搜尋目錄的內容。
-follow:跟隨符號連結。
-maxdepths N:最多搜尋N層目錄。
-mount:不搜尋其它檔案系統中的目錄。
二、測試
可以提供給find命令的測試非常多,每種測試返回的結果有兩種可能:true或false。find命令開始工作時,按照順序將定義的每種測試依次應用到它搜尋到的每個檔案上。如果一個測試返回false,find命令就停止處理它當前找到的這個檔案,並繼續進行搜尋。如果一個測試返回true,find命令將繼續進行下一個測試或對當前檔案採取行動。下面是最常用的測試,更多測試參考find命令使用手冊:
-atime N:檔案在N天之前被訪問過。
-mtime N:檔案在N天之前被修改過。
-name pattern:檔名(不包括路徑名)匹配提供的模式pattern,為了確保pattern被直接傳遞給find命令而不是由shell來處理,pattern必須總是用引號括起。
-newer otherfile:檔案比otherfile檔案要新。
-type c:檔案的型別為C,C可以是一個特殊型別。最普通的型別是d(目錄)和f(普通檔案)。其它可用的型別請參考使用手冊。
-user username:檔案的擁有者是指定的使用者username。
還可以用操作符來組合測試,大多數操作符有兩種格式:短格式和長格式:
短格式 長格式 含義
! -not 測試取反
-a -and 兩個測試都必須為真
-o -or 兩個測試之一必須為真
可以通過使用圓括號來強制測試和操作符的優先順序。由於圓括號對shell來說有其特殊的含義,所以我們還必須使用反斜線來引用圓括號。此外,如果在檔名處使用的是匹配模式,就必須在模式上使用引號,以確保模式沒有被shell擴充套件,而是直接傳遞給find命令。如果想寫一個測試,即搜尋的檔案比檔案X要新,或者檔名以下劃線開頭,就可以這樣寫這個測試:
\(-newer X -o -name "_*" \)
-----括號後要有空格
如果要在當前目錄下查詢以下劃線開頭的檔案或比while2檔案要新的檔案,可以如下來寫這個測試:
$find . \( -name "_*" -o -newer while2 \) -type f -print
-----括號後要有空格
三、動作
實際上,搜尋到匹配指定條件的檔案之後,還可以執行一些動作,常見的動作如下,更多動作資訊參看find命令的使用手冊:
-exec command:執行一條命令。
-ok command:與-exec類似,但它在執行命令之前會針對每個要處理的檔案,提示使用者進行確認。
-print:列印檔名。
-ls:對當前檔案使用命令ls -dils.
-exec和-ok命令將命令列上後續的引數作為它們引數的一部分,直到被\;序列終止。魔術字串{}是-exec或-ok命令的一個特殊型別的引數,它將被當前檔案的完整路徑取代。
下面舉例說明如何使用ls命令:
$find . -newer while2 -type f -exec ls -l {} \;
-rwxr-xr-x 1 scq scq 256 Feb 8 17:07 ./test
-rwxr-xr-x 1 scq scq 257 Feb 8 17:08 ./hello
-rwxr-xr-x 1 scq scq 258 Feb 8 17:09 ./world
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23205405/viewspace-775531/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux find命令Linux
- linux find 命令!Linux
- linux/unix find命令Linux
- linux中file命令和find命令Linux
- Linux find 命令詳解Linux
- Linux find命令詳解Linux
- Linux精講——find命令Linux
- linux每日命令(20):find命令概覽Linux
- Linux 常用基本命令 findLinux
- (轉)Linux find命令詳解Linux
- Linux下find命令詳解Linux
- Linux Find 命令精通指南Linux
- Linux/Unix重要find命令詳解Linux
- 在 Linux中find命令使用技巧Linux
- linux 查詢檔案命令 findLinux
- Linux下find命令的用法(轉)Linux
- 每天一個linux命令:find命令之xargsLinux
- linux find 命令和 while 命令聯合使用案例LinuxWhile
- find 命令
- find命令
- Linux - find命令常用引數與示例Linux
- linux命令終極系列之(find)(轉)Linux
- Linux下ulimit、find命令使用者LinuxMIT
- 每天一個linux命令(1):find命令之execLinux
- 每天一個 Linux 命令(19):find 命令概覽Linux
- 每天一個 Linux 命令(20):find命令之execLinux
- 每天一個 Linux 命令(21):find命令之xargsLinux
- Linux學習之linux的find命令如何使用?Linux
- find -newer命令
- Linux 命令列:find 的 26 個用法示例Linux命令列
- Linux系統下find、locate命令如何使用?Linux
- Linux中find命令-path -prune用法詳解Linux
- 為什麼要謹慎使用Linux find命令?Linux
- linux中查詢find命令的複雜用法Linux
- linux中強大且常用命令:find、grepLinux
- linux下find,xargs命令詳解和例項Linux
- Linux檔案查詢命令find,xargs詳述Linux
- linux_命令集_tar_find_sed_du_Linux