歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux運維利器--Find命令

Linux運維利器--Find命令

日期:2017/2/28 14:48:32   编辑:Linux教程

Find命令總結

實時

精確

支持眾多查找標准

遍歷指定目錄中的所有文件完成查找,速度相對慢;

find 查找路徑 查找標准 查找到以後的處理運作

查找路徑:默認為當前目錄

查找標准:默認為指定路徑下的所有文件

處理運作:默認為顯示


匹配標准

-name 'FILENAME':對文件名作精確匹配

文件名通配:

*:任意長度的任意字符

?

[]

-iname 'FILENAME': 文件名匹配時不區分大小寫


實例:

find ./ -name "*.conf"

find ./ -iname "MyC.c" 忽略大小寫!

find . -perm 777


+++++++++++++++++++++++++++++++++++++++++++++++

-user USERNAME: 根據屬主查找

-group GROUPNAME: 根據屬組查找

-uid UID: 根據UID查找

-gid GID: 根據GID查找

-nouser:查找沒有屬主的文件

-nogroup: 查找沒有屬組的文件


實例:

1、查找/var目錄下屬主為root並且屬組為mail的所有文件;

find /var -user root -group mail


2、查找/usr目錄下不屬於root,bin,或student的文件;

find /usr -not -user root -a -not -user bin -a -not -user student

find /usr -not \( -user root -o -user bin -o -user student \)


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-type

f: 普通文件

d: 目錄

c:字符設備

b:塊設備

l:軟連接文件

p:管道文件

s:套節字


實例:

find /etc -type f

find /etc -type d

find ./ ! -type d #在當前目錄下查找除目錄以外的所有類型的文件


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-size [+|-]

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


實例:

find ./ -size 0 -exec rm {} \;

find ./ -size 0 | xargs rm -f

find . -size +1000000c #在當前目錄下查找文件長度大於1 M字節的文件

find /home/apache -size 100c #在/home/apache目錄下查找文件長度恰好為100字節的文件

find . -size +10 #在當前目錄下查找長度超過10塊的文件(一塊等於512字節)


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

文件狀態判斷

-mtime: 指定時間文件內容被修改過

-ctime: 指定時間文件權限被修改過

-atime: 指定時間文件被讀取過


1、找出3天“以前”被修改過的文檔

find /var/log/ -mtime +3 -type f -print


2、找出3天“內”被修改過的文檔

find /var/log/ -mtime -3 -type f -print


3、找出第3天被修改過的文檔.

find /var/log/ -mtime 3 -type f -print

或這樣寫:

find /var/log/ -mtime +2 -mtime -4 -type f -print


注:

訪問過用amin,修改過用mmin,文件狀態改變過用cmin

精確到分鐘的用amin,mmin,cmin,精確到天的用atime,mtime,ctime


find /logs -type f -mtime +5 -exec rm {} \; #在/logs目錄中查找更改時間在5日以前的文件並刪除它們

find / -mtime -5 -print #在系統根目錄下查找更改時間在5日以內的文件


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-mount:在查找文件時不跨越文件系統mount點,這樣限制在本文件系統!

這個用的不多就不舉實例了!


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-prune

find /apps -path "/apps/bin" -prune -o -print #在/apps目錄下查找文件,但不希望在/apps/bin目錄下查找。在用這條命令時,要麼各目錄最好用絕對路徑,要麼前後對應,如:find test/ -path "./test/a" -prune -o -print 這種方式是不對的.


-depth:在查找文件時,首先查找當前目錄中的文件,然後再在其子目錄中查找。

-maxdepth:

find . -maxdepth 1 -name fred #在當前目錄下查找

find . -maxdepth 2 -name fred #在當前目錄的下一級目錄查找

find -mindepth 3 -maxdepth 5 -name passwd

[root@fb13 /]# find . -maxdepth 3 -name test

./b/test

./usr/bin/test

./a/test


find /project -maxdepth 2 \( -path "/project/exapi/log" -o -path "/project/exapi/backup" \) -prune -o -print |grep "/project/exapi/" |xargs tar zcf /backup/exapi_`date +%F`.tar.gz


++++++++++++++++++++++++++++++++++++++++++++++++++++

使用混合查找方式: -a -o -not

find /tmp -size +10000000c -a -mtime +2

find / -user andy -o -user jack

find /tmp -not -user zjqiu

Copyright © Linux教程網 All Rights Reserved