Linux-鸟菜-6-文件搜索
Linux-鳥菜-6-文件搜索
which(尋找[執行檔])
alian?..............這個后面顯示的是別名
沒有找到history是因為which是根據PATH環境變阿玲去搜索執行文件的名的。
?
whereis?(由一些熱定的目錄中找文件文件名)
????上面,which找執行文件,默認whereis列出所有文件(二進制和非二進制),-b就可以找二進制執行文件了。
?
which和whereis快是因為他們并不是遍歷所有的文件夾,而只是查詢一些固定好的目錄。所以相比find遍歷所有來說會快很多。
locate/updatedb
額..我系統是英文的,在網上找個中文的來:
? ? locate的速度也賊快,但是他并不是因為和which和whereis一樣因為只搜索制定目錄才快,他快是因為它搜索的是數據庫,數據文件的”鏡像”存在了數據庫里,不用去真正遍歷文件夾去搜索數據,所以快,同時這也就帶來了一個問題就是數據庫更新問題,可以手動更新,updatedb來更新下,如果不手動更新系統會定時自動更新,比如一天更新一次。所以通常自己馬上建立一個文件,直接去搜索并不能搜到,需要手動更新一次再搜。這個問題需要留意。
find
最后是說最慢最屌的find命令,這個命令慢是因為它真正發的去遍歷并且查找所有相關。屌是以因為條件可以設置的很細,如名字,類型,用戶,時間等等。
幫助命令
find名字/權限/過濾路徑
Find?用戶組/用戶名/時間
查找更改時間比文件file1新但比文件file2舊的文件??-newer?file1?!?file2
???說明:?find?-newer?file1?!file2
?
查找某一類型的文件?-type?
說明:
類型文件:?
b?-?塊設備文件。?
d?-?目錄。?
c?-?字符設備文件。?
p?-?管道文件。?
l?-?符號鏈接文件。?
f?-?普通文件。?
find?/etc?-type?d?–print?在/etc目錄下查找所有的目錄?
find?.?!?-type?d?–print?在當前目錄下查找除目錄以外的所有類型的文件?
find?/etc?-type?l?–print?在/etc目錄下查找所有的符號鏈接文件
?
以文件大小來查找?-size?n
-size?n:[c]?查找文件長度為n塊的文件,帶有c時表示文件長度以字節計
說明:
find?.?-size?+1000000c?–print?在當前目錄下查找文件長度大于1?M字節的文件?
find?.?-size?100c?–print?在當前目錄下查找文件長度恰好為100字節的文件?
find?.?-size?+10?–print?在當前目錄下查找長度超過10塊的文件(一塊等于512字節)
在查找文件時不跨越文件系統mount點?-mount
說明:
find?.?-name?"*.sh"?-mount?–print?從當前目錄開始查找位于本文件系統中文件名以sh結尾的文件(不進入其他文件系統)
如果find命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件?-follow
在當前目錄及所有子目錄中查找filename(忽略大小寫)
#?find?-iname?"filename"
在根目錄分級查找
查找根目錄和根目錄的和只展開一級的子目錄中查找
$find?-maxdepth?2?-name?passwd?
在根目錄和根目錄下展開兩級查找passwd文件
$find?/?-maxdepth?3?-name?passwd
在根目錄的第二級和第四級之間查找
$?find?-mindepth?3?-maxdepth?5?-name?passwd
?
find與exec一起使用
在當前目錄下查找文件,并使用exec執行ls?-l命令
find?.??-type?f?-exec?ls?-l?{}?\;??
查找并刪除dir1目錄下更改時間小于一天的文件
find?dir1?-type?f?-mtime?-1?-exec?rm?{}?\;?
查找并刪除dir1目錄下更改時間小于一天的文件,刪除時提示是否刪除??y?刪除??n不刪除
find?dir2?-name?"*.txt"?-mtime?-1?-ok?rm?{}?\;?
?
find與xargs一起使用
find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像-exec選項那樣。這樣它可以先處理最先獲取的一部分文件,然后是下一批,并如此繼續下去。
#查找系統中的每一個普通文件,然后使用xargs命令來測試它們分別屬于哪類文件:
find?.?-type?f?-print?|?xargs?file??
#在整個系統中查找內存信息轉儲文件(core?dump)?,然后把結果保存到/tmp/core.log?文件中:
find?/?-name?"core"?-print?|?xargs?echo?""?>/tmp/core.log??
#用grep命令在所有的普通文件中搜索wirelessqa這個詞
find?.?-type?f?-print?|?xargs?grep?"wirelessqa"??
#在/bixiaopeng/apps目錄下查找所有用戶具有讀、寫和執行權限的文件,并收回相應的寫權限:
find?/bixiaopeng/apps??-perm?-7?-print?|?xargs?chmod?o?-w?
?
#刪除3天以前的所有東西?(find?.?-ctime?+3?-exec?rm?-rf?{}?\;)
find?./?-mtime?+3?-print|xargs?rm?-f?–r??
#刪除文件大小為零的文件
find?.?-size?0?|?xargs?rm?-f?&
總結
以上是生活随笔為你收集整理的Linux-鸟菜-6-文件搜索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 反弹代理环境的搭建
- 下一篇: Linux-鸟菜-7-Linux文件系统