find 命令詳解

基本格式:

find 【路徑】 【-選項】 【-操作】


一、路徑

1. ./ 當前目錄

2. ~ 用戶家目錄

3 ./home 當前目錄下的家目錄

4. /home /home目錄

5. /home/wang/ /home目錄下的wang目錄


二、選項

1.name選項:

使用文件名('filename')來匹配:可以和其他選項一起使用

# find ./ -name "[A-Z]*" -print

查找當前目錄及子目錄中文件名以一個大寫字母開頭的文件

# find /etc -name "host*" -print

查找/etc目錄中以host開頭的文件

2.perm選項:

使用文件權限來查找文件

# find ./ -perm 755 -print

當前目錄下查找文件權限位爲755的文件

# find ./ -perm -005

都匹配,如-007就相當於777,-005相當於555

3.prune選項:

查找文件時忽略某個目錄。不能與-depth選項同用

# find /home -path '/home/wang' -prune -o -print

查找/home目錄中不在wang子目錄之內的所有文件

# find test \( -path test/test4 -o -path test/test3 \) -prune -o -print

避開多個文件夾。圓括號表示表達式的結合

# find test \(-path test/test4 -o -path test/test3 \) -prune -o -name "*.log" -print

查找某一確定文件,-name等選項加在-o 之後

4.user和nouser選項:

按文件屬主查找文件

# find /etc -user wang -print

在/etc目錄下查找文件屬主爲wang的文件

# find /home -nouser -print

查找/home目錄中在/etc/passwd文件中沒有有效帳戶的文件

5.group和nogroup選項:

按文件所屬組查找

# find /etc -group root -print

在/etc目錄下查找屬於root用戶組的文件

# find / -nogroup-print

在根目錄查找沒有有效所屬用戶組的所有文件

6.mtime或atime選項:

按照更改時間來查找文件

# find / -mtime -5 -print

在系統根目錄下查找更改時間在5天內的文件

# find /var/log -mtime +3 -print

在/var/log目錄下查找更改時間在3天前的文件

7.newer選項:

查找比某個文件新或舊的文件

一般形式爲:

newest_file_name ! oldest_file_name

其中,!是邏輯非符號

# find ./ -newer log2012.log -print

查找更改時間在比log2012.log文件新的文件

# find -newer log2015.log ! -newer log2016.log

查找更改時間比文件log2015.log新但比文件log2016.log舊的文件

8.type選項:

按照類型查找

# find /etc -type d -print

在/etc目錄下查找所有的目錄

# find ./ ! -type d -print

在當前目錄下查找除目錄以外的所有類型的文件

# find /etc -type l -print

在/etc目錄下查找所有的符號鏈接文件

9.size選項:

按照文件長度來查找文件

文件長度既可以用塊(block)來計量(只用數字表示即可),也可以用字節來計量(Nc)

# find ./ -size +1000000c -print

查找當前目錄x下文件長度大於1 M字節的文件

# find /var/log -size 100c -print

查找/var/log下文件長度恰好爲100字節的文件

# find ./ -size +10 -print

查找當前目錄下長度超過10塊的文件(一塊等於512字節)

10.depth選項:

先匹配所有的文件,再在子目錄中查找

# find / -name "666" -depth -print

從根目錄開始先匹配所有的文件然後再進入子目錄中查找一個名爲666的文件

11.mount選項:

在當前的文件系統中查找(不進入其他文件系統)

# find ./ -name "*.TXT" -mount -print

查找目錄中位於本文件系統中文件名以TXT結尾的文件


三、參數

1.-print 輸出到標準輸出,常省略

# find /etc -name "host*" -print

查找/etc目錄中以host開頭的文件,並打印

2.-exec 對匹配到的文件執行shell。語法 -exec 'command'{} \;

# find /var/log/ -type f -name 'mysql*.log' -exec rm -rf {} \;

查找/var/log目錄下類型爲普通文件的mysql日誌,並且刪除

3.-ok 與-exec作用相同,只不過是交互式操作

# find /var/log -mtime -3 -ok rm -rf {} \;

查找/var/log下的3天內的文件,以交互的方式刪除

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