find - search for files in a directory hierarchy
find命令用來在指定目錄下查找文件。
任何位于參數(shù)之前的字符串都將被視為欲查找的目錄名。
如果使用該命令時(shí),不設(shè)置任何參數(shù),則find命令將在當(dāng)前目錄下查找子目錄與文件。并且將查找到的子目錄和文件全部進(jìn)行顯示。
語法:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
參數(shù):
-name 按名字查找 后接“文件名”,支持正則表達(dá)式和通配符-mtime 按照文件的mtime修改時(shí)間查找文件(modify),文件內(nèi)容被修改的最后時(shí)間-atime 訪問時(shí)間(access)linux命令,文件中的數(shù)據(jù)庫最后被訪問的時(shí)間-ctime 變化時(shí)間(change),文件內(nèi)容被修改的最后時(shí)間! 取反-perm 644linux命令,755 權(quán)限查找-size n 文件大小-exec 執(zhí)行命令
示例:
刪除找到的文件
[root@oldboy data]# echo test >a.txt [root@oldboy data]# ls a.txt oldboy.txt [root@oldboy data]# find /data -type f -name 'a.txt' -exec rm {} \; [root@oldboy data]# ls oldboy.txt [root@oldboy data]# find /data -type f -name 'oldboy.txt' -exec rm {} \; [root@oldboy data]# ls
批量創(chuàng)建1-10的.txt文件,通過查找命令將找到的所有.txt文件通過管道符交給xargs命令,將所有文件放在一行,再由rm -f強(qiáng)制刪除。
[root@oldboy data]# touch {1..10}.txt [root@oldboy data]# ls 10.txt 2.txt 4.txt 6.txt 8.txt 1.txt 3.txt 5.txt 7.txt 9.txt [root@oldboy data]# find /data -type f -name '*.txt' |xargs /data/2.txt /data/5.txt /data/3.txt /data/9.txt /data/7.txt /data/1.txt /data/4.txt /data/10.txt /data/8.txt /data/6.txt [root@oldboy data]# find /data -type f -name '*.txt' |xargs rm -f [root@oldboy data]# ls
在腳本中刪除文件或目錄時(shí),**生產(chǎn)環(huán)境**的使用方法一般為:
刪除在/logs目錄下,以oldboy結(jié)尾的修改時(shí)間再30天以前的目錄使用find的-exec
重要提示:find命令是生產(chǎn)環(huán)境中極重要的一個(gè)命令,要精通才好。