linux的文件搜索命令,Linux文件搜索命令find的用法 | 术与道的分享
不管在Windows還是Linux中,最重要的問題不是說你能搜索到這個(gè)文件,而是最好少用搜索,應(yīng)該是你在整個(gè)服務(wù)器的規(guī)劃里面,把所以的文件目錄規(guī)劃的很好。就像如果你在家里找衣服,如果不是你亂扔,就不可能花費(fèi)太長的時(shí)間。因?yàn)樗阉鲿?huì)占用大量的系統(tǒng)資源,但是有一些操作比如被他人非法修改的文件,的確find命令是一個(gè)很好的選擇。
文件搜索命令find的一般格式
find path -option [-print] [-exec -ok command] {} \;
path:find命令所要查找的目錄路徑,比如/root,表示在root目錄下搜索匹配。
-print:find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。
-exec:find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。
-ok:和exec作用相同,只不過以一種更為安全的模式來執(zhí)行該參數(shù)給出的shell命令,在執(zhí)行每一個(gè)命令執(zhí)行都會(huì)提示是否確認(rèn)執(zhí)行。
1
2
3
4
5
6
7
8
9
findpath-option[-print][-exec-okcommand]{}\;
path:find命令所要查找的目錄路徑,比如/root,表示在root目錄下搜索匹配。
-print:find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。
-exec:find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。
-ok:和exec作用相同,只不過以一種更為安全的模式來執(zhí)行該參數(shù)給出的shell命令,在執(zhí)行每一個(gè)命令執(zhí)行都會(huì)提示是否確認(rèn)執(zhí)行。
find一般搜索使用實(shí)例
在目錄/etc中查找文件init
find /etc -name init
1
2
3
在目錄/etc中查找文件init
find/etc-nameinit
大家可能會(huì)認(rèn)為只要文件名包含init,比如initab,123init都會(huì)被匹配到,linux不同于windows,linux中的搜索就是精準(zhǔn)搜索,也就是說,只有文件名為init的文件才可以搜索到。那么如果linux下我想搜索文件名包含init的文件怎么辦呢?
find /etc -name *init*
只要文件名里面包含init都會(huì)被例舉出來
* :表示匹配一個(gè)字符串
1
2
3
4
5
find/etc-name *init*
只要文件名里面包含init都會(huì)被例舉出來
*:表示匹配一個(gè)字符串
find /etc -name init*
表示在etc目錄中匹配文件名以init開頭的文件
1
2
3
find/etc-nameinit*
表示在etc目錄中匹配文件名以init開頭的文件
find /etc -name init???
在etc目錄下搜索文件名以init開頭后面跟3個(gè)字符的文件
?:匹配單個(gè)字符
1
2
3
4
5
find/etc-nameinit???
在etc目錄下搜索文件名以init開頭后面跟3個(gè)字符的文件
?:匹配單個(gè)字符
iname:表示不區(qū)分大小寫
1
iname:表示不區(qū)分大小寫
在根目錄下查找大于100MB的文件
find / +size +204800
1
2
3
在根目錄下查找大于100MB的文件
find/+size+204800
在linux當(dāng)中,一個(gè)數(shù)據(jù)塊是512字節(jié),即0.5K,文件的大小以數(shù)據(jù)塊來計(jì)算,因此100MB=102400KB=204800。數(shù)據(jù)塊是linux文件中存儲(chǔ)的最小單位。+n:大于,-n:小于,n:等于。
普通用戶家目錄下查找所有者為wenyang的文件
find / -user wenyang
1
2
3
普通用戶家目錄下查找所有者為wenyang的文件
find/-userwenyang
user表示根據(jù)所有者查找,當(dāng)然,我們也可以使用-group根據(jù)所屬組來搜索。
通過時(shí)間屬性來搜索
-amin:訪問時(shí)間 access
-cmin:文件屬性 change
-mmin:文件內(nèi)容 modify
上述三種以分鐘為單位
1
2
3
4
5
6
7
-amin:訪問時(shí)間access
-cmin:文件屬性change
-mmin:文件內(nèi)容modify
上述三種以分鐘為單位
-atime:訪問時(shí)間 access
-ctime:文件屬性 change
-mtime:文件內(nèi)容 modify
上述三種以天為單位
1
2
3
4
5
6
7
-atime:訪問時(shí)間access
-ctime:文件屬性change
-mtime:文件內(nèi)容modify
上述三種以天為單位
我習(xí)慣性把上述的3個(gè)時(shí)間屬性稱為ACM,在這里我附上前面一篇關(guān)于ACM的博文方便大家記憶:https://www.1024do.com/?p=2318。
在home目錄下查找10分鐘內(nèi)被修改過屬性的文件和目錄
find /home -cmin -10
1
2
3
在home目錄下查找10分鐘內(nèi)被修改過屬性的文件和目錄
find/home-cmin-10
-10表示10分鐘之內(nèi),+10代表的就是10分鐘以前。其他時(shí)間屬性的操作與此一致。
find中的多條件命令
在/home下尋找大于2MB小于4MB的文件
find /home -size +2048 -a -size -8192
1
2
3
在/home下尋找大于2MB小于4MB的文件
find/home-size+2048-a-size-8192
-a在這里表示兩個(gè)條件同時(shí)滿足,與之對(duì)應(yīng)的還有-o,表示兩個(gè)條件滿足任意一個(gè)即可。
在/etc下查找inittab文件并顯示其詳細(xì)信息
find /etc -name inittab -exec ls -l {} \;
1
2
3
在/etc下查找inittab文件并顯示其詳細(xì)信息
find/etc-nameinittab-execls-l{}\;
-exec在這里起一個(gè)鏈接作用,與-ok的區(qū)別在于,它不需要確認(rèn),而-ok會(huì)進(jìn)行安全檢查。ls -l表示顯示文件信息,{}表示對(duì)find查詢的結(jié)果替換,\表示轉(zhuǎn)義符,;表示結(jié)束。
通過文件類型搜索
-type 根據(jù)文件類型查找
f:文件
d:目錄
l:軟鏈接文件
1
2
3
4
-type根據(jù)文件類型查找
f:文件
d:目錄
l:軟鏈接文件
在etc目錄下尋找以init開頭的并且是文件類型的文件
find /etc -name init* -a -type f
1
2
3
在etc目錄下尋找以init開頭的并且是文件類型的文件
find/etc-nameinit*-a-typef
在etc目錄下尋找以init開頭的目錄
find /etc -name init* -a -type d
1
2
3
在etc目錄下尋找以init開頭的目錄
find/etc-nameinit*-a-typed
在etc目錄下尋找以init開頭的軟鏈接
find /etc -name init* -a -type l
1
2
3
在etc目錄下尋找以init開頭的軟鏈接
find/etc-nameinit*-a-typel
根據(jù)i節(jié)點(diǎn)查找
即inum,每個(gè)文件或目錄都有一個(gè)i節(jié)點(diǎn),這里不詳細(xì)描述,只簡單介紹一下其用法,具體情況大家可以自行百度,我們可以通過尋找一個(gè)文件、目錄的inum節(jié)點(diǎn)而對(duì)其進(jìn)行其他操作。
搜索home目錄下刪除i節(jié)點(diǎn)為127的目錄
find /home -inum 127 -exec rm -rf {} \;
1
2
3
搜索home目錄下刪除i節(jié)點(diǎn)為127的目錄
find/home-inum127-execrm-rf{}\;
從圖中可以看出,通過查看文件或目錄的i節(jié)點(diǎn),就可以對(duì)其進(jìn)行附加的操作。
總結(jié):find命令可以精準(zhǔn)的搜索到你的預(yù)期要求,當(dāng)其他命令不能搜索到某個(gè)文件或目錄時(shí),find確實(shí)給我們帶來了很多便捷,但是,find命令在搜索的時(shí)候是從硬盤進(jìn)行遍歷的,因此會(huì)非常耗費(fèi)硬盤的資源,這樣就會(huì)使搜索時(shí)間提高,隨之而來的就是效率的低下,所以說,find是一把雙刃劍,帶給我們便捷的途中,也難免讓我們耗費(fèi)更多的資源與時(shí)間。
總結(jié)
以上是生活随笔為你收集整理的linux的文件搜索命令,Linux文件搜索命令find的用法 | 术与道的分享的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webpack+vue+mui学习心得
- 下一篇: 《寄生虫》横扫奥斯卡,Python告诉你