您好,登錄后才能下訂單哦!
這篇文章主要介紹“Linux find命令怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Linux find命令怎么使用”文章能幫助大家解決問題。
在指定目錄下查找文件
find命令 用來在指定目錄下查找文件。任何位于參數之前的字符串都將被視為欲查找的目錄名。如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進行顯示。
find(選項)(參數)
-amin:查找在指定時間曾被存取過的文件或目錄,單位以分鐘計算; -anewer:查找其存取時間較指定文件或目錄的存取時間更接近現在的文件或目錄; -atime:查找在指定時間曾被存取過的文件或目錄,單位以24小時計算; -cmin:查找在指定時間之時被更改過的文件或目錄; -cnewer查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄; -ctime:查找在指定時間之時被更改的文件或目錄,單位以24小時計算; -daystart:從本日開始計算時間; -depth:從指定目錄下最深層的子目錄開始查找; -expty:尋找文件大小為0 Byte的文件,或目錄下沒有任何子目錄或文件的空目錄; -exec:假設find指令的回傳值為True,就執行該指令; -false:將find指令的回傳值皆設為False; -fls:此參數的效果和指定“-ls”參數類似,但會把結果保存為指定的列表文件; -follow:排除符號連接; -fprint:此參數的效果和指定“-print”參數類似,但會把結果保存成指定的列表文件; -fprint0:此參數的效果和指定“-print0”參數類似,但會把結果保存成指定的列表文件; -fprintf:此參數的效果和指定“-printf”參數類似,但會把結果保存成指定的列表文件; -fstype:只尋找該文件系統類型下的文件或目錄; -gid:查找符合指定之群組識別碼的文件或目錄; -group:查找符合指定之群組名稱的文件或目錄; -help或--help:在線幫助; -ilname:此參數的效果和指定“-lname”參數類似,但忽略字符大小寫的差別; -iname:此參數的效果和指定“-name”參數類似,但忽略字符大小寫的差別; -inum:查找符合指定的inode編號的文件或目錄; -ipath:此參數的效果和指定“-path”參數類似,但忽略字符大小寫的差別; -iregex:此參數的效果和指定“-regexe”參數類似,但忽略字符大小寫的差別; -links:查找符合指定的硬連接數目的文件或目錄; -lname:指定字符串作為尋找符號連接的范本樣式; -ls:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出; -maxdepth:設置最大目錄層級; -mindepth:設置最小目錄層級; -mmin:查找在指定時間曾被更改過的文件或目錄,單位以分鐘計算; -mount:此參數的效果和指定“-xdev”相同; -mtime:查找在指定時間曾被更改過的文件或目錄,單位以24小時計算; -name:指定字符串作為尋找文件或目錄的范本樣式; -newer:查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄; -nogroup:找出不屬于本地主機群組識別碼的文件或目錄; -noleaf:不去考慮目錄至少需擁有兩個硬連接存在; -nouser:找出不屬于本地主機用戶識別碼的文件或目錄; -ok:此參數的效果和指定“-exec”類似,但在執行指令之前會先詢問用戶,若回答“y”或“Y”,則放棄執行命令; -path:指定字符串作為尋找目錄的范本樣式; -perm:查找符合指定的權限數值的文件或目錄; -print:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出。格式為每列一個名稱,每個名稱前皆有“./”字符串; -print0:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出。格式為全部的名稱皆在同一行; -printf:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出。格式可以自行指定; -prune:不尋找字符串作為尋找文件或目錄的范本樣式; -regex:指定字符串作為尋找文件或目錄的范本樣式; -size:查找符合指定的文件大小的文件; -true:將find指令的回傳值皆設為True; -type:只尋找符合指定的文件類型的文件; -uid:查找符合指定的用戶識別碼的文件或目錄; -used:查找文件或目錄被更改之后在指定時間曾被存取過的文件或目錄,單位以日計算; -user:查找符和指定的擁有者名稱的文件或目錄; -version或——version:顯示版本信息; -xdev:將范圍局限在先行的文件系統中; -xtype:此參數的效果和指定“-type”參數類似,差別在于它針對符號連接檢查。
起始目錄:查找文件的起始目錄。
# 當前目錄搜索所有文件,文件內容 包含 “140.206.111.111” 的內容 find . -type f -name "*" | xargs grep "140.206.111.111"
列出當前目錄及子目錄下所有文件和文件夾
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
找出當前目錄下所有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 . -empty
find ~ -name '*jpg' # 主目錄中找到所有的 jpg 文件。 -name 參數允許你將結果限制為與給定模式匹配的文件。 find ~ -iname '*jpg' # -iname 就像 -name,但是不區分大小寫 find ~ ( -iname 'jpeg' -o -iname 'jpg' ) # 一些圖片可能是 .jpeg 擴展名。幸運的是,我們可以將模式用“或”(表示為 -o)來組合。 find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f # 如果你有一些以 jpg 結尾的目錄呢? (為什么你要命名一個 bucketofjpg 而不是 pictures 的目錄就超出了本文的范圍。)我們使用 -type 參數修改我們的命令來查找文件。 find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type d # 也許你想找到那些命名奇怪的目錄,以便稍后重命名它們
最近拍了很多照片,所以讓我們把它縮小到上周更改的文件
find ~ \( -iname '*jpeg' -o -iname '*jpg' \) -type f -mtime -7
你可以根據文件狀態更改時間 (ctime)、修改時間 (mtime) 或訪問時間 (atime) 來執行時間過濾。 這些是在幾天內,所以如果你想要更細粒度的控制,你可以表示為在幾分鐘內(分別是 cmin、mmin 和 amin)。 除非你確切地知道你想要的時間,否則你可能會在 + (大于)或 – (小于)的后面加上數字。
但也許你不關心你的照片。也許你的磁盤空間不夠用,所以你想在 log 目錄下找到所有巨大的(讓我們定義為“大于 1GB”)文件:
find /var/log -size +1G
或者,也許你想在 /data 中找到 bcotton 擁有的所有文件:
find /data -owner bcotton
你還可以根據權限查找文件。也許你想在你的主目錄中找到對所有人可讀的文件,以確保你不會過度分享。
find ~ -perm -o=r
刪除 mac 下自動生成的文件
find ./ -name '__MACOSX' -depth -exec rm -rf {} \;
統計代碼行數
find . -name "*.java"|xargs cat|grep -v ^$|wc -l # 代碼行數統計, 排除空行
關于“Linux find命令怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。