天天看點

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/ \; 移動某個檔案到指定目錄

繼續閱讀