Linux find command

LINUX 下查找指定時(shí)間的所有文件

find. -name "*.txt" -mtime -1

//以上為1小時(shí)以內(nèi)的當(dāng)前目錄內(nèi)修改的所有為txt格式的文件. 其中-1為1小時(shí)以內(nèi), +1為1小時(shí)之前

find

. -mmin -10 //查找10分鐘內(nèi)當(dāng)前目錄內(nèi)修改的所有文件

?find . -mmin +10 //查找1小時(shí)內(nèi),10分鐘外當(dāng)前目錄內(nèi)修改的所有文件

//-mmin為查找1小時(shí)內(nèi)的按照分鐘計(jì)算的修改文件

find . -newer a.txt //查找10分鐘內(nèi)當(dāng)前目錄內(nèi)修改的所有文件

//查找當(dāng)前目錄下(遞歸子目錄)的所有修改時(shí)間在a.txt之后(所以文件更新)的文件和目錄

不常用指令

find命令用于查找文件和目錄,任何位于參數(shù)之前的字符串都將被視為欲查找的目錄。

find可以指定查找條件如名稱颓鲜,類型尊浪,時(shí)間,文件大小城看,權(quán)限和所有者查找女气,針對(duì)多個(gè)條件進(jìn)行與或非的邏輯運(yùn)算。我們可以控制find的查找的行為析命,還可以和其他命令組合使用主卫。

find

find .

find . -print

三者等效, 查找當(dāng)前目錄下所有的文件和目錄(遞歸子目錄)逃默,以每行一個(gè)文件或者目錄的形式列舉出,不包含隱藏文件

findlib opt bin

同上簇搅,查找指定的多個(gè)目錄(lib/opt/bin)

(1) 指定查找條件

1) 按名稱查找

find. -name readme.txt

查找當(dāng)前目錄下(遞歸子目錄)的所有名為readme.txt的文件

find. -name \*.txt

find. -name “*.txt”

查找當(dāng)前目錄下(遞歸子目錄)的所有名稱以.txt結(jié)尾的文件完域,注意*號(hào)的寫法,需要前面加\或者放到雙引號(hào)中

find. -iname \*.txt

默認(rèn)find是區(qū)分大小寫的瘩将,如果不想?yún)^(qū)分大小寫吟税,請(qǐng)使用-iname替代-name,如上則”abc.TXT”將被查找到

2) 按類型查找

find. -type d

查找當(dāng)前目錄下(遞歸子目錄)的所有目錄

find. -type f

查找當(dāng)前目錄下(遞歸子目錄)的所有文件

find. -type l

查找當(dāng)前目錄下(遞歸子目錄)的所有符號(hào)鏈接

3) 按時(shí)間查找

1. 以小時(shí)為單位的時(shí)間

find命令三個(gè)選項(xiàng)用于按照時(shí)間查找姿现,單位都是小時(shí):

mtime

— 文件內(nèi)容上次修改時(shí)間

atime

— 文件被讀取或訪問的時(shí)間

ctime

— 文件狀態(tài)變化時(shí)間

這三個(gè)選項(xiàng)都需要配置一個(gè)n值使用肠仪,可以是-n / n / +n:

-n 小于n

n 正好與 n 相等

+n 大于n

find. -mtime -1

查找當(dāng)前目錄下(遞歸子目錄)的所有1小時(shí)內(nèi)修改的文件和目錄

find. -mtime +1

查找當(dāng)前目錄下(遞歸子目錄)的所有修改時(shí)間超過1小時(shí)的文件和目錄

find. -mtime 1

查找當(dāng)前目錄下(遞歸子目錄)的所有恰好在1小時(shí)前修改的文件和目錄

2. 以分鐘為單位的時(shí)間

用法和*time類似,mmin备典、amin和cmin 的不同在于單位時(shí)間是分鐘异旧,用于查找在不到1小時(shí)的時(shí)間內(nèi)變化了的文件和目錄

find. -mmin -10

查找當(dāng)前目錄下(遞歸子目錄)的所有10分鐘內(nèi)修改的文件和目錄

find. -mmin +20

查找當(dāng)前目錄下(遞歸子目錄)的所有20分鐘外1小時(shí)內(nèi)修改的文件和目錄

3. 與特定的文件比較

-newer,-anewer和-cnewer選項(xiàng)用于查找與特定的文件比較的已修改或訪問過的文件,類似mtime,atime和ctime

-newer指內(nèi)容最近被修改的文件

-anewer指最近被讀取過的文件

-cnewer指狀態(tài)最近發(fā)生變化的文件

find. -newer a.txt

查找當(dāng)前目錄下(遞歸子目錄)的所有修改時(shí)間在a.txt之后(所以文件更新)的文件和目錄

4) 按文件大小查找

-size 選項(xiàng)用于查找滿足指定的大小條件的文件(注意不查找目錄), +表示大于, -表示小于, 沒有+1表示正好等于提佣。文件大小的單位可以是字節(jié)(用c表示), kb(用k表示)吮蛹。

find. -size -100c

查找當(dāng)前目錄下(遞歸子目錄)的所有文件大小小于100字節(jié)的文件

find. -size +100k

查找當(dāng)前目錄下(遞歸子目錄)的所有文件大小大于100k的文件

find. -size 0

查找當(dāng)前目錄下(遞歸子目錄)的所有文件大小為0的文件

-empty 查找空文件和空文件夾, 和-size 0不同的在于-size 0 只查找空文件,或者說-empty -type f 等同于-size 0 :

find. -empty

查找當(dāng)前目錄下(遞歸子目錄)的所有文件大小為0的文件和空文件夾

find. -empty -type f

查找當(dāng)前目錄下(遞歸子目錄)的所有文件大小為0的文件

find. -empty -type d

查找當(dāng)前目錄下(遞歸子目錄)的所有空目錄

5) 按權(quán)限和所有者查找

find. -perm 777

查找當(dāng)前目錄下(遞歸子目錄)的所有權(quán)限為777的文件和目錄

find. -perm -u=rwx

查找當(dāng)前目錄下(遞歸子目錄)的所有user權(quán)限為rwx的文件和目錄

find. -perm -ug=x

查找當(dāng)前目錄下(遞歸子目錄)的所有user和group權(quán)限為x的文件和目錄

find. -user sky

查找當(dāng)前目錄下(遞歸子目錄)的所有user為sky的文件和目錄

find. -group users

查找當(dāng)前目錄下(遞歸子目錄)的所有g(shù)roup為users的文件和目錄

(2) 查找條件的邏輯運(yùn)算

1. 邏輯與

find. -name “*.java” -size -mmin -10

find. -name “*.java” -a -size -mmin -10

查找當(dāng)前目錄下(遞歸子目錄)的所有名為*.java并且修改時(shí)間在10分鐘之內(nèi)的文件拌屏,-a是默認(rèn)選項(xiàng)

2. 邏輯或

find. -name “*.class” -o -name “*.jar”

查找當(dāng)前目錄下(遞歸子目錄)的所有名為*.class或者*.jar的文件和目錄

3. 邏輯非

find. ! -user sky

查找當(dāng)前目錄下(遞歸子目錄)的所有user不是sky的文件和目錄

(3) 控制查找的行為

find. -maxdepth 3 -name “*.txt”

查找當(dāng)前目錄下(遞歸子目錄)的所有名為*.txt的文件潮针,目錄深度不超過3層

find. -maxdepth 1 -name “*.txt”

查找當(dāng)前目錄下(不遞歸子目錄,因?yàn)閙axdepth為1)的所有名為*.txt的文件

find. -mindepth 3 -name “*.txt”

查找當(dāng)前目錄下(遞歸子目錄)的所有名為*.txt的文件倚喂,目錄深度不低于3層

find. -mindepth 1 -name “*.txt”

查找當(dāng)前目錄下的子目錄中(遞歸子目錄)的所有名為*.txt的文件每篷,不包含當(dāng)前目錄

find. -depth -name “*.txt”

查找當(dāng)前目錄下(遞歸子目錄)的所有名為*.txt的文件,每個(gè)目錄都是先在目錄中進(jìn)行查找端圈,然后才繼續(xù)查找其子目錄

(4)find和其他命令的組合

find. -name “*.jar” -exec ls -l {} \;

find. -name “*.jar” -ls

查找當(dāng)前目錄下(遞歸子目錄)的所有*.jar文件并使用ls -l列出詳細(xì)信息

find. -name “*.java” -exec grep HashMap {} \;

查找當(dāng)前目錄下(遞歸子目錄)的所有的含有”HashMap”字樣的*.java文件

find. -name “*.sh” -exec mv {} backup \;

查找當(dāng)前目錄下(遞歸子目錄)的所有的*.sh文件并移動(dòng)到backup目錄中

以下轉(zhuǎn)自:http://luojiaofei.blog.163.com/blog/static/14360348920114611233559/

我們經(jīng)常要在日常的工作中查找文件焦读,要說linux下最強(qiáng)大的文件查找工具,非find莫屬枫笛。find可以從文件名吨灭、讀取修改時(shí)間、大小刑巧、類型等等來篩選文件喧兄,可以完成日常幾乎所有的查找需求。

來看一個(gè)簡單的例子:

find/tmp/ -name ‘galeki*’

意思就是在/tmp目錄下找出以“galeki”開頭的文件啊楚,-name指出是對(duì)文件名進(jìn)行篩選吠冤,是不是很簡單明了?除了文件名恭理,find還有更強(qiáng)大的篩選條件:

1.時(shí)間:

參數(shù) 意義

-atime

n 上一次存取時(shí)間在n*24小時(shí)前以內(nèi)的文件

-ctime

n 上一次狀態(tài)改變?cè)趎*24小時(shí)前以內(nèi)的文件

-mtime

n 上一次修改時(shí)間在n*24小時(shí)前以內(nèi)的文件

-newer

file 比file所指的文件還要新的文件

2.大姓蕖:

參數(shù) 意義

-size

n[bkMG] 大小為n(b為比特,k為KB,M為MB涯保,G為GB)的文件

3.所有者:

參數(shù) 意義

-user

name 所有者用戶名稱是name的文件

-group

name 所有者用戶組群名稱是name的文件

例子:

find

/tmp/ -name ‘sess*’ -mtime 1? ?#在/tmp目錄下找到所有以’sess’開頭诉濒、并且在一個(gè)小時(shí)以內(nèi)修改過的文件

find

./ -name ‘*.zip’ -size 546k? ? ? ?#在當(dāng)前目錄下找到所有546KB的zip壓縮包文件

find

/tmp/ -user ‘galeki’? ? ? ? ? ? ? ?#在/tmp目錄下找到所有所有者為galeki的文件

另外,還可以用”+”夕春、”-“來進(jìn)一步修飾時(shí)間和大小的條件:

find

src/ -mtime +2? ? ? ? ? ? #找出src目錄下上一次修改時(shí)間在2天以前的文件

find

download/ -size +50M? ? #在download目錄下找出大于50M的文件

光找出文件還不夠未荒,我們還要對(duì)找出的文件進(jìn)行處理才有意義,一般來講可以把find的查找結(jié)果傳遞給其他的命令做進(jìn)一步處理及志。find本身也提供了許多處理動(dòng)作的選項(xiàng)片排。

常用的處理動(dòng)作:

參數(shù) 意義

-print

打印出找出文件的完整地址,一個(gè)文件一行

-delete

刪除找出的文件

-execcommand {} \;

對(duì)每一個(gè)找到的文件執(zhí)行command命令速侈,

并用文件替換”{}”率寡,“\;”是固定的結(jié)束符。

例子:

find

/tmp/ -ctime +7 -delete? ? ? ? ? ? #刪除/tmp目錄下一周以前創(chuàng)建的文件

find

./ -name ‘*.unk’ -exec file {} \;? ?#找出當(dāng)前文件夾下后綴是unk的文件倚搬,并用file命令顯示每個(gè)文件的文件類型

========================

查找并打包:

find. -name “*.txt” -mtime -1 | xargs -n 100 tar -rvf 20110902.tar

//查找當(dāng)前文件夾下所有1天內(nèi)修改的txt文件并打包為20110902.tar

find./ -name “*[cC][aA][mM][eE][rR][aA]*.*” -ok tar -czvf my.tar.gz {} \

========================

以下轉(zhuǎn)自:http://www.linuxsir.org/main/?q=node/137

一冶共、find 命令格式

1、find命令的一般形式為每界;

findpathname -options [-print -exec -ok ...]

2比默、find命令的參數(shù);

pathname:

find命令所查找的目錄路徑盆犁。例如

style="color: #888888;">

#ff0000;">用

style="color: #000000;">.來表示當(dāng)前目錄,用

#000000;">/來表示系統(tǒng)根目錄篡九。

-print: find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出谐岁。

-exec: find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。相應(yīng)命令的形式為'command' {? } \;榛臼,注意{? ?}和\伊佃;之間的空格。

-ok: 和-exec的作用相同沛善,只不過以一種更為安全的模式來執(zhí)行該參數(shù)所給出的shell命令航揉,在執(zhí)行每一個(gè)命令之前,都會(huì)給出提示金刁,讓用戶來確定是否執(zhí)行帅涂。

4、使用find查找文件的時(shí)候怎么避開某個(gè)文件目錄

比如要在/usr/sam目錄下查找不在dir1子目錄之內(nèi)的所有文件

find/usr/sam -path "/usr/sam/dir1" -prune -o -print

find

[-path ..] [expression] 在路徑列表的后面的是表達(dá)式

-path

“/usr/sam” -prune -o -print 是-path“/usr/sam” -a -prune -o

-print的簡寫表達(dá)式按順序求值, -a 和 -o 都是短路求值尤蛮,與 shell 的 && 和 || 類似如果 -path “/usr/sam” 為真媳友,則求值 -prune ,

-prune 返回真,與邏輯表達(dá)式為真产捞;否則不求值 -prune醇锚,與邏輯表達(dá)式為假。如果 -path “/usr/sam” -a -prune 為假坯临,則求值 -print 焊唬,-print返回真恋昼,或邏輯表達(dá)式為真;否則不求值 -print赶促,或邏輯表達(dá)式為真液肌。

這個(gè)表達(dá)式組合特例可以用偽碼寫為

if-path "/usr/sam"? then

-prune

else

-print

避開多個(gè)文件夾

find/usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print

圓括號(hào)表示表達(dá)式的結(jié)合。

\ 表示引用芳杏,即指示 shell 不對(duì)后面的字符作特殊解釋矩屁,而留給 find 命令去解釋其意義。

查找某一確定文件爵赵,-name等選項(xiàng)加在-o 之后

#find/usr/sam? \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吝秕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子空幻,更是在濱河造成了極大的恐慌烁峭,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秕铛,死亡現(xiàn)場離奇詭異约郁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)但两,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門鬓梅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谨湘,你說我怎么就攤上這事绽快。” “怎么了紧阔?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵坊罢,是天一觀的道長。 經(jīng)常有香客問我擅耽,道長活孩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任乖仇,我火速辦了婚禮憾儒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乃沙。我一直安慰自己航夺,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布崔涂。 她就那樣靜靜地躺著阳掐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缭保,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天汛闸,我揣著相機(jī)與錄音,去河邊找鬼艺骂。 笑死诸老,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的钳恕。 我是一名探鬼主播别伏,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忧额!你這毒婦竟也來了厘肮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤睦番,失蹤者是張志新(化名)和其女友劉穎类茂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體托嚣,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巩检,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了示启。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兢哭。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖夫嗓,靈堂內(nèi)的尸體忽然破棺而出厦瓢,到底是詐尸還是另有隱情,我是刑警寧澤啤月,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站劳跃,受9級(jí)特大地震影響谎仲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刨仑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一郑诺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杉武,春花似錦辙诞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春较店,著一層夾襖步出監(jiān)牢的瞬間士八,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工梁呈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留婚度,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓官卡,卻偏偏與公主長得像蝗茁,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寻咒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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