Find命令是linux中最常用且重要的命令之一刁标,用于檢索文件所在的位置靖苇,可以根據(jù)多種參數(shù)組合進行檢索:文件名稱,文件權(quán)限,文件屬組链峭,文件類型骏啰,文件大小等毕箍。
雖然man find
手冊有關(guān)于find的詳細說明浪谴,可缺乏實例的說明文檔顯得干巴巴,對初學者很不友好害驹。導致初學者對于find產(chǎn)生這樣的印象:“我知道find很強大鞭呕,但不知道用在什么場景,該怎么用”宛官。
再強大的工具葫松,只有會用瓦糕,用得好,才能體現(xiàn)出其價值腋么。
基于此咕娄,本文將用實例講解find命令常用場景:
基本使用
-name 指定文件名
$ find /etc -name passwd
/etc/cron.daily/passwd
/etc/pam.d/passwd
/etc/passwd
find會對指定路徑進行遞歸查找
-iname 忽略大小寫
$ find . -iname test.txt
./TesT.txt
./Test.txt
./test.txt
-type d 查找目錄
$ find . -type d -name dir1
./dir1
-type f 查找文件
$ find . -type f -name test.php
./test.php
查找某一類文件
$ find . -type f -name "*.php"
./test.php
./test1.php
./test2.php
*
表示通配符
根據(jù)權(quán)限查找
查找權(quán)限為777的文件
$ find . -type f -perm 777 -print
查找權(quán)限不為777的文件
$ find . -type f ! -perm 777
!
反選
查找可執(zhí)行文件
即查找所有用戶都擁有x
權(quán)限的文件
$ find . -type f -perm /a=x
找到777權(quán)限的文件并將其改為644
$ ll
-rwxrwxrwx 1 root root 0 9月 17 22:01 test
$ find -type f -perm 777 -print -exec chmod 644 {} \;
./test
$ ll
-rw-r--r-- 1 root root 0 9月 17 22:01 test
查找并刪除單一文件
$ find . -type f -name "test" -exec rm -f {} \;
查找并刪除多個文件
$ find . -type f -name "*.txt" -exec rm -f {} \;
查找所有空文件
$ find /tmp -type f -empty
查找所有空目錄
$ find /tmp -type d -empty
查找所有隱藏文件
$ find . -type f -name ".*"
根據(jù)屬主/屬組查找文件
$ find /etc -user senlong -name passwd
$ find /etc -user root -name passwd
/etc/cron.daily/passwd
/etc/pam.d/passwd
/etc/passwd
$ find /etc -group root -name passwd
/etc/cron.daily/passwd
/etc/pam.d/passwd
/etc/passwd
根據(jù)文件時間查找
50天前修改過的文件
$ find . -mtime 50
大于50天小于100天前修改過的文件
$ find . -mtime +50 -mtime -100
根據(jù)文件大小查找
查找大小為50M的文件
$ find / -size 50M
查看大小為50M至100M的文件
$ find / -size +50M -size -100M
查找大于100M的log文件并刪除
$ find / -type f -name "*.log" -size +100M -exec rm {} \;