008 Linux 文件查找 find

017斑頭雁.png

01 一起來認識 find!

在 Linux 系統(tǒng)闷盔,find 毫無疑問是最強的文件查找工具倦西。find 一般會與其他命令結(jié)合能真,將查找到的結(jié)果作為參數(shù)傳入到后置命令中,進行刪除、統(tǒng)計粉铐、復制遷移等操作疼约。

02 find 文件名、類型查找過濾

  • find / -name 'hello.txt' #從根目錄下開始查找文件 hello.txt蝙泼;
  • find . -iname 'hello.txt' #從當前目錄下開始查找文件 hello.txt程剥,-iname 會忽略大小寫;
  • find . -name '*hello.txt' #當前目錄下汤踏,查找目標名稱后綴為 "hello.txt" 的文件织鲸;
  • find / -type f -size +500M #從根目錄開始查找,500M以上文件溪胶;-type f: f為普通文件類型搂擦,f 改為 d 則是目錄文件,l 則是符號鏈接文件哗脖,-type 還有其他參數(shù)盾饮;-size +500M :500MB以上 。一般磁盤空間不夠懒熙,刪除垃圾文件時會使用到此命令丘损;
  • find . -type f -size +1k #查找當前文件夾下超過1k的文件,注意k是小寫工扎;
  • find /etc ! -type f #查找 /etc 目錄下不是普通文件的文件徘钥,"!":感嘆號,取反肢娘;

03 find 時間范圍查找過濾

find . {-atime/-ctime/-mtime/-amin/-cmin/-mmin} [-/+]num #使用基本格式

  1. 第一個參數(shù)呈础,'.' 代表當前目錄,如果是其他目錄橱健,可以輸入絕對目錄和相對目錄位置而钞;
  2. 第二個參數(shù)分兩部分,前面字母a拘荡、c臼节、m分別代表訪問、變更珊皿、修改网缝,后面time為日期,min為分鐘蟋定,注意只能以這兩個作為單位粉臊;
  3. 第三個參數(shù)為量,其中不帶符號表示符合該數(shù)量的驶兜,帶-表示符合該數(shù)量以后的扼仲,帶+表示符合該數(shù)量以前的远寸。

??參數(shù)說明:

  • atime:訪問時間(access time),指的是文件最后被讀取的時間屠凶,可以使用touch命令更改為當前時間驰后;
  • ctime:變更時間(change time),指的是文件本身最后被變更的時間阅畴,變更動作可以使chmod、chgrp迅耘、mv等等贱枣;
  • mtime:修改時間(modify time),指的是文件內(nèi)容最后被修改的時間颤专,修改動作可以使echo重定向纽哥、vi等等;

??一些使用示例:

  • find . -type f -mtime -30 #查找當前目錄下30天之內(nèi)修改過的文件栖秕;
  • find /var/log/ -mtime +30 -name '*.log' # 查找指定目錄/var/log/ 下30天以前被修改的log類型文件春塌;
  • find /etc -maxdepth 1 ! -type l -mtime -30 #查找/etc 第一層目錄下不是符號鏈接文件的文件,并在30天內(nèi)被修改過簇捍,-maxdepth :指定目錄層級只壳,-maxdepth 1代表第1層,-maxdepth 2代表延伸到第二層暑塑;

04 find 組合命令刪除文件的三種方法

【場景案例】

用wc -l來統(tǒng)計下log數(shù)量吼句,再進行刪除。
find . -name '*.log' -mtime +30 | wc -l #從當前目錄下開始搜索30天之前的log文件事格,并統(tǒng)計數(shù)量惕艳, "|": 管道符,將前面查到的數(shù)據(jù)作為輸入源給后面的命令驹愚;

【第一種刪除方式:-exec】

find . -name '*.log' -mtime +30 -exec rm {} ; #查找當前目錄下30天以前的log文件,使用-exec加rm將其刪除;exec命令以分號結(jié)束';'把跨,該分號前面要放反斜杠轉(zhuǎn)義 们拙。

【第二種刪除方式:-ok】

find . -name '*.log' -mtime +30 -ok rm {} ; #查找當前目錄下30天以前的log文件,-ok : 詢問刪除劫瞳,y刪除棠耕,n不刪除,回車默認不刪除柠新;命令以分號結(jié)束';'窍荧, 該分號前面要放反斜杠轉(zhuǎn)義 。

【第三種刪除方式:xargs】

find . -name '*.log' -mtime +30 -print0 | xargs -0 rm -f # xargs : 命令傳遞參數(shù)過濾器恨憎,與管道符 "|" 一同使用蕊退,將前面的命令傳遞給后面的命令使用郊楣;

05 find 與xargs 組合使用

  1. xargs 識別字符段的標識是空格或者換行符,若一個文件名里有空格或者換行符瓤荔,xargs 就會把它識別成兩個字符串净蚤,就會出錯。這時就需要-print0和-0输硝。
  2. find -print0 表示在 find 的每一個結(jié)果之后加一個NULL字符今瀑,而不是默認加一個換行符。find 的默認在每一個結(jié)果后加一個 '\n'点把,所以輸出結(jié)果是一行一行的橘荠。當使用了-print0之后,就變成一行了郎逃。
  3. xargs -0 表示 xargs 用 NULL 來作為分隔符哥童。這樣前后搭配就不會出現(xiàn)空格和換行符的錯誤。NULL做分隔符褒翰,是因為一般編程語言把NULL作為字符串結(jié)束的標志贮懈,所以文件名不可能以NULL結(jié)尾。

??使用案例:

  • find . -name '*.log' -mtime +10 -print0 | xargs -0 rm -f #保險的方式刪除优训,推薦這樣使用
  • find / -name '*.log' -mtime +30 | xargs ls -l #對于30天前的log文件進行詳情查看朵你,利用xargs + ls -l 命令來進行文件的詳細屬性查看;
  • find / -name '*.log' -mtime +30 | xargs -i mv {} /logback #將30天前的所有l(wèi)og文件移動到 /logback 文件夾下揣非,xargs -i + {}撬呢,將前面查找到的文件都作為參數(shù)給mv命令執(zhí)行;

06 find下xargs與-exec的區(qū)別

??區(qū)別一:

  • -exec妆兑,是將查找到的結(jié)果文件名逐個傳遞給后面的命令執(zhí)行魂拦,文件多會導致效率低;
  • xargs搁嗓,則是一次性傳遞芯勘,效率較高,并可使用-n參數(shù)控制傳遞文件個數(shù)腺逛。

??區(qū)別二:

  • -exec荷愕,文件名有空格等特殊字符也照常處理;
  • xargs棍矛,處理特殊的文件名(例如文件名有空格)需要采用特殊的處理方式(find . -name "*.log" -print0| xargs -0 ls -l)安疗。

07 一個常用實踐組合命令

【場景】

查找超過500M大小文件,并顯示查找出來文件的具體大小够委,且按照大小排序荐类。

【命令示例】

  • find . -type f -size +500M -print0 | xargs -0 du -h | sort -nr
  • find . -name '*.log' -size +500M -print0 | xargs -0 du -h | sort -nr

08 小結(jié)

find 命令是查找文件神器,可按文件名茁帽、類型查找過濾玉罐;按時間范圍查找過濾屈嗤;同時組合其他命令使用,可大大提高操作效率吊输。

「不甩鍋的碼農(nóng)」原創(chuàng)饶号,轉(zhuǎn)載請注明來源,未經(jīng)授權(quán)禁止商業(yè)用途季蚂!同名 GZH 請關(guān)注茫船!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扭屁,隨后出現(xiàn)的幾起案子算谈,更是在濱河造成了極大的恐慌,老刑警劉巖疯搅,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件濒生,死亡現(xiàn)場離奇詭異埋泵,居然都是意外死亡幔欧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門丽声,熙熙樓的掌柜王于貴愁眉苦臉地迎上來礁蔗,“玉大人,你說我怎么就攤上這事雁社≡【” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵霉撵,是天一觀的道長磺浙。 經(jīng)常有香客問我,道長徒坡,這世上最難降的妖魔是什么撕氧? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮喇完,結(jié)果婚禮上伦泥,老公的妹妹穿的比我還像新娘。我一直安慰自己锦溪,他們只是感情好不脯,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刻诊,像睡著了一般防楷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上则涯,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天域帐,我揣著相機與錄音赘被,去河邊找鬼。 笑死肖揣,一個胖子當著我的面吹牛民假,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播龙优,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼羊异,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了彤断?” 一聲冷哼從身側(cè)響起野舶,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宰衙,沒想到半個月后平道,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡供炼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年一屋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袋哼。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡冀墨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涛贯,到底是詐尸還是另有隱情诽嘉,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布弟翘,位于F島的核電站虫腋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏稀余。R本人自食惡果不足惜悦冀,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滚躯。 院中可真熱鬧雏门,春花似錦、人聲如沸掸掏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丧凤。三九已至募闲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間愿待,已是汗流浹背浩螺。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工靴患, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人要出。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓鸳君,卻偏偏與公主長得像,于是被迫代替她去往敵國和親患蹂。 傳聞我的和親對象是個殘疾皇子或颊,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容