find

 

1. 通過文件的特徵查找:
===============================

1) 按文件名
   find /    -name httpd.conf
   find /usr -name httpd.conf
   find /etc -name '*srm*'

2) 
按大小
   find / -size 1500c      # 查找文件大小爲1,500 bytes的文件,字符 c 表明這個要查找的文件的大小是以bytes爲單位。
   find/ -size +10000000c # "+”是表示要求系統只列出大於指定大小的文件, "-”表示小於
   find / -empty           # 查找在系統中爲空的文件或者文件夾

   -size:表示文件大小,+表示大於某個數,-表示小於某個數。c表示單位是字節,你可以將c換成k,M,G。

3) 按時間
   find / -amin -10        # 查找在系統中最後10分鐘訪問的文件
   find / -atime -2        # 查找在系統中最後48小時訪問的文件

   find / -mmin -5         # 查找在系統中最後5分鐘裏修改過的文件
   find / -mtime -1        # 查找在系統中最後24小時裏修改過的文件

   find / -cmin -5         # 查找在系統中最後5分鐘裏被改變狀態的文件
   find / -ctime -1        # 查找在系統中最後24小時裏被改變狀態的文件
   
 
訪問過用amin,修改過用mmin,文件狀態改變過用cmin
 精確到分鐘的用amin,mmin,cmin,精確到天的用atime,mtime,ctime
 在5分鐘之內的用-5,在5分鐘以上的用+5

4) 按用戶
   find / -user fred       # 查找在系統中屬於FRED這個用戶的文件
   find / -group cat       # 查找在系統中屬於 groupcat的文件
   find / -nouser          # 查找在系統中屬於作廢用戶的文件
 
5) 其他
   -false 查找系統中總是錯誤的文件
   -fstype type 查找系統中存在於指定文件系統的文件,例如:ext2 .
   -gid n 查找系統中文件數字組 ID 爲 n的文件
   -group gname 查找系統中文件屬於gnam文件組,並且指定組和ID的文件
 


===============================
2. 通過文件的特徵查找:
===============================

Find命令也提供給用戶一些特有的選項來控制查找操作。下表就是我們總結出的最基本,最常用的find命令的控制選項及其用法。

   選項               用途描述
-daystart     .   .測試系統從今天開始24小時以內的文件,用法類似-amin
-depth             使用深度級別的查找過程方式,在某層指定目錄中優先查找文件內容
-follow            遵循通配符鏈接方式查找; 另外,也可忽略通配符鏈接方式查詢

-maxdepth levels   在某個層次的目錄中按照遞減方法查找
-mount             不在文件系統目錄中查找, 用法類似 -xdev.
-noleaf            禁止在非UNUX文件系統,MS-DOS系統,CD-ROM文件系統中進行最優化查找

-help              顯示命令摘要
-version           打印版本數字


使用-follow選項後,find命令則遵循通配符鏈接方式進行查uuuu找,除非你指定這個選項,否則一般情況下find命令將忽略通配符鏈接方式進行文件查找。

-maxdepth選項的作用就是限制find命令在目錄中按照遞減方式查找文件的時候搜索文件超過某個級別或者搜索過多的目錄,這樣導致查找速度變慢,查找花費的時間過多。例如,我們要在當前(.)目錄技巧子目錄中查找一個名叫fred的文件,我們可以使用如下命令
find . -maxdepth 2 -name fred

假如這個fred文件在./sub1/fred目錄中,那麼這個命令就會直接定位這個文件,查找很容易成功。假如,這個文件在./sub1/sub2 /fred目錄中,那麼這個命令就無法查找到。因爲前面已經給find命令在目錄中最大的查詢目錄級別爲2,只能查找2層目錄下的文件。這樣做的目的就是爲了讓find命令更加精確的定位文件,如果你已經知道了某個文件大概所在的文件目錄級數,那麼加入-maxdepth n 就很快的能在指定目錄中查找成功。


===============================
3. 使用混合查找方式:
===============================

find /tmp -size +10000000c -and -mtime +2       // -and
find /    -user fred       -or -user george     // -or   
在/tmp目錄中查找屬於fred或者george這兩個用戶的文件
find /tmp ! -user panda                         // -or   在/tmp目錄中查找所有不屬於panda的文件
命令就可以解決了。很簡單。






查找並顯示文件的方法
查找到某個文件是我們的目的,我們更想知道查找到的文件的詳細信息和屬性,
find / -name "httpd.conf" -ls


下面的表格就是一些常用的查找文件並顯示文件信息的參數和使用方法
選項      用途描述
-exec command;   查找並執行命令
-fprint file   打印文件完整文件名
-fprint0 file   打印文件完整文件名包括空的文件
-fprintf file format     打印文件格式
-ok command;             給用戶命令執行操作,根據用戶的Y 確認輸入執行
-printf format           打印文件格式
-ls                      打印同種文件格式的文件.





===============================
2. 普通用戶無錯誤查找:
===============================

    find / -name access_log 2>/dev/null

    
說明:當普通用戶使用"find”命令來查詢某些沒有相應權限文件目錄時(Linux系統中系統管理員ROOT可以把某些文件目錄設置成禁止訪問模式)
,往往會出現"Permissiondenied."(禁止訪問)字樣。 2>/dev/null就是表明系統將把錯誤信息輸送到stderrstream 2中.


--------------------------------
-exec command;
--------------------------------
刪除一個目錄中的全部文件
cd “目的目錄”
find . -name * -exec rm -f {} \;



-exec 參數後面跟的是 command命令,注意如下幾點:

1) command命令的終止,使用 ';' (分號)來判定,在後面必須有一個 ';'
   出於不明原因, ';'需要用'\'來轉義 ,所以命令整體形式爲: -exec rm -f {} \;

2) '{}',使用{}來表示文件名,也就是find前面處理過程中過濾出來的文件,用於command命令進行處理



1.查詢所有保護字符串“Hello”的文件

find / -exec grep "Hello" {} \;

2.刪除所有臨時文件

find / -name "*.tmp" -exec rm -f {} \;





-----------------------------------------------------------------------


 find與xargs的用法------實際例子(ZT)
本文來自: IT運維專家網(LinuxTone.Org) 作者: NetSeek 日期: 2008-5-25 19:04 閱讀: 2414 人 打印 收藏
find, 命令
原文鏈接:http://bbs.linuxtone.org/thread-12-1-1.html IT運維專家網--"自由平等,互助分享!"
(1) find . -type f -exec ls -l {} \;
解釋:查找當前路徑下的所有普通文件,並把它們列出來。

(2)find logs -type f -mtime +5 -exec rm {} \;
解釋:刪除logs目錄下更新時間爲5日以上的文件。

(3)find . -name "*.log" -mtime +5 -ok rm {} \;
解釋:刪除當前路徑下以。log結尾的五日以上的文件,刪除之前要確認。

(4) find ~ -type f -perm 4755 -print
解釋:查找$HOME目錄下suid位被設置,文件屬性爲755的文件打印出來。

說明: find在有點系統中會一次性得到將匹配到的文件都傳給exec,但是有的系統對exec的命令長度做限制,就會報:”參數列太長“,這就需要使用xargs。xargs是部分取傳來的文件。

(5)find / -type f -print |xargs file
解釋:xargs測試文件分類

(6)find . -name "core*" -print|xargs echo " ">/tmp/core.log
解釋:將core文件信息查詢結果報存到core。log日誌。

(7)find / -type f -print | xargs chmod o -w

(8)find . -name * -print |xargs grep "DBO"

/usr/bin/find . -type f -name "*.gz" -mtime +387 -exec mv {} /gzbackup/ \; 移動某個文件到指定目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章