Linux下find指令的使用

2021-08-07 12:08:48 字數 3427 閱讀 7897

find命令用來在指定目錄下查詢檔案。任何位於引數之前的字串都將被視為欲查詢的目錄名。如果使用該命令時,不設定任何引數,則find命令將在當前目錄下查詢子目錄與檔案。並且將查詢到的子目錄和檔案全部進行顯示。

find

(選項)

(引數)

選項

引數

起始目錄:查詢檔案的起始目錄。

例項

根據檔案或者正規表示式進行匹配 列出當前目錄及子目錄下所有檔案和資料夾

find .

在/home目錄下查詢以.txt結尾的檔名

find /home -iname 「*.txt」

當前目錄及子目錄下查詢所有以.txt和.pdf結尾的檔案

find . ( -name 「.txt」 -o -name 「.pdf」 ) 或

find . -name 「.txt」 -o -name 「.pdf」

匹配檔案路徑或者檔案 find /usr/ -path 「local」 基於正規表示式匹配檔案路徑

find . -regex 「.*(.txt|.pdf)$」

同上,但忽略大小寫

find . -iregex 「.*(.txt|.pdf)$」

否定引數 找出/home下不是以.txt結尾的檔案

find /home ! -name 「*.txt」

根據檔案型別進行搜尋

find . -type

型別引數

型別引數列表:

基於目錄深度搜尋

向下最大深度限制為3

find . -maxdepth 3 -type f

搜尋出深度距離當前目錄至少2個子目錄的所有檔案

find . -mindepth 2 -type f

根據檔案時間戳進行搜尋

find . -type f

時間戳 unix/linux檔案系統每個檔案都有三種時間戳: 訪問時間(-atime/天,-amin/分鐘):使用者最近一次訪問時間。 修改時間(-mtime/天,-mmin/分鐘):檔案最後一次修改時間。 變化時間(-ctime/天,-cmin/分鐘):檔案資料元(例如許可權等)最後一次修改時間。 搜尋最近七天內被訪問過的所有檔案

find . -type f -atime -7

搜尋恰好在七天前被訪問過的所有檔案

find . -type f -atime 7 搜尋超過七天內被訪問過的所有檔案

find . -type f -atime +7 搜尋訪問時間超過10分鐘的所有檔案

find . -type f -amin +10 找出比file.log修改時間更長的所有檔案

find . -type f -newer file.log 根據檔案大小進行匹配

find . -type f -size 檔案大小單元 檔案大小單元: b —— 塊(512位元組) c —— 位元組 w —— 字(2位元組) k —— 千位元組 m —— 兆位元組 g —— 吉位元組 搜尋大於10kb的檔案

find . -type f -size +10k 搜尋小於10kb的檔案

find . -type f -size -10k 搜尋等於10kb的檔案

find . -type f -size 10k 刪除匹配檔案 刪除當前目錄下所有.txt檔案

find . -type f -name 「*.txt」 -delete 根據檔案許可權/所有權進行匹配 當前目錄下搜尋出許可權為777的檔案 find . -type f -perm 777 找出當前目錄下許可權不是644的php檔案

find . -type f -name 「*.php」 ! -perm 644 找出當前目錄使用者tom擁有的所有檔案

find . -type f -user tom 找出當前目錄使用者組sunk擁有的所有檔案

find . -type f -group sunk 借助-exec選項與其他命令結合使用 找出當前目錄下所有root的檔案,並把所有權更改為使用者tom find .-type f -user root -exec chown tom {} \; 上例中,{} 用於與-exec選項結合使用來匹配所有檔案,然後會被替換為相應的檔名。 找出自己家目錄下所有的.txt檔案並刪除 find $home/. -name 「*.txt」 -ok rm {} \; 上例中,-ok和-exec行為一樣,不過它會給出提示,是否執行相應的操作。 查詢當前目錄下所有.txt檔案並把他們拼接起來寫入到all.txt檔案中

find . -type f -name 「*.txt」 -exec cat {} \;> all.txt 將30天前的.log檔案移動到old目錄中

find . -type f -mtime +30 -name 「*.log」 -exec cp {} old \; 找出當前目錄下所有.txt檔案並以「file:檔名」的形式列印出來

find . -type f -name 「*.txt」 -exec printf 「file: %s\n」 {} \;

因為單行命令中-exec引數中無法使用多個命令,以下方法可以實現在-exec之後接受多條命令 -exec ./text.sh {} \; 搜尋但跳出指定的目錄

查詢當前目錄或者子目錄下所有.txt檔案,但是跳過子目錄sk

find . -path 「./sk」 -prune -o -name 「*.txt」 -print find其他技巧收集 要列出所有長度為零的檔案

find . -empty

前面哪些你如果看的暈,只關心結果,那麼我來補充幾個使用的技巧

find -name '*.php'|xargs grep

'include'

find .

-name

'*.php'

-exec grep -i

-nh"include" {} \;//同上

比如我要尋找所有mk檔案中包含com.mediatek.keyguard.ext的地方:

find -name 『*.mk』|xargs grep 『com.mediatek.keyguard.ext』

find -name 『android.mk』|xargs grep 『com.mediatek.keyguard.ext』 > result001.txt

linux下的find指令

在linux下我們可以用到三個命令來查詢檔案,通常我們都是先使用whereis或者是locate來檢查,如果真的找不到了我們才以find來找。為什麼呢?因為whereis和locate是利用資料庫來查詢資料,所以相當快速,而且並沒有實際查詢硬碟,比較節省時間。但是find是直接查詢硬碟,如果你的硬碟...

Linux下的find指令

在linux 下我們可以用到三個命令來查詢檔案,通常使用whereis或者是locate來檢查,如果真的找不到了我們就以find來找。因為whereis和locate是利用 資料庫來查詢資料,所以相當快速,而且並沒有實際查詢硬碟,比較節省時間。但是find是直接查詢硬碟,如果你的硬碟比較老舊的話,就...

Linux下的指令 查詢指令 find

linux下find命令在目錄結構中搜尋檔案,並執行指定的操作。1.linux下find命令格式 find pathname options print exec ok 2.命令功能 用於在檔案樹中查詢檔案,並作出相應的處理 可能訪問磁碟 3.命令引數 pathname find命令所查詢的目錄路徑...