linux find 命令查詢檔案和資料夾
查詢目錄:find /(查詢範圍) -name 『查詢關鍵字』 -type d
查詢檔案:find /(查詢範圍) -name 查詢關鍵字 -print
詳解:find命令用來在指定目錄下查詢檔案。任何位於引數之前的字串都將被視為欲查詢的目錄名。如果使用該命令時,不設定任何引數,則find命令將在當前目錄下查詢子目錄與檔案。並且將查詢到的子目錄和檔案全部進行顯示。
例項根據檔案或者正規表示式進行匹配
列出當前目錄及子目錄下所有檔案和資料夾
find .
在/home目錄下查詢以.txt結尾的檔名
find /home -name 「*.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 型別引數
型別引數列表:
f 普通檔案
l 符號連線
d 目錄
c 字元裝置
b 塊裝置
s 套接字
p fifo
基於目錄深度搜尋
向下最大深度限制為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
Linux find 查詢檔案
在日誌資料夾下判斷是否有web伺服器的日誌資料夾,寫了個指令碼 bin bash cd wls annuity acc for sys in cat wiiserver name list.txt do find logs sys name sys xargs echo en n 123.txt f...
linux find 查詢檔案
1.根據名稱查詢某個目錄下的檔案 目錄 例子 查詢根目錄下的檔案名字為a.txt find name a.txt 2.根據名稱查詢某個目錄下型別為檔案的a.txt type f 檔案 d 目錄 find name a.txt type f 3.查詢某目錄下大小為在某個範圍的檔案 例子 查詢hive目...
linux find 命令查詢檔案和資料夾
查詢目錄 find 查詢範圍 name 查詢關鍵字 type d 查詢檔案 find 查詢範圍 name 查詢關鍵字 print 詳解 find命令用來在指定目錄下查詢檔案。任何位於引數之前的字串都將被視為欲查詢的目錄名。如果使用該命令時,不設定任何引數,則find命令將在當前目錄下查詢子目錄與檔案...