Linux下find命令在目錄結構中搜索文件,並執行指定的操做。Linux下find命令提供了至關多的查找條件,功能很強大html
命令選項: -name 按照文件名查找文件。 -perm 按照文件權限來查找文件。 -user 按照文件屬主來查找文件。 -group 按照文件所屬的組來查找文件。 -mtime -n +n 按照文件的更改時間來查找文件 【-7 7天以內 +7 7天前】 -nogroup 查找無效屬組的文件,即該文件所屬的組在/etc/groups中不存在。 -nouser 查找無效屬主的文件,即該文件的屬主在/etc/passwd中不存在。 -newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件。 -type 查找某一類型的文件,諸如: b - 塊設備文件。 d - 目錄。 c - 字符設備文件。 p - 管道文件。 l - 符號連接文件。 f - 普通文件。 -size n:[c] 查找文件長度爲n塊的文件,帶有c表示文件長度以字節計。 -depth:在查找文件時,首先查找當前目錄中的文件,而後再在其子目錄中查找。 -follow:若是find命令遇到符號連接文件,就跟蹤至連接所指向的文件。 另外,下面三個的區別: -amin n 查找系統中最後N分鐘訪問的文件 -atime n 查找系統中最後n*24小時訪問的文件 -cmin n 查找系統中最後N分鐘被改變文件狀態的文件 -ctime n 查找系統中最後n*24小時被改變文件狀態的文件 -mmin n 查找系統中最後N分鐘被改變文件數據的文件 -mtime n 查找系統中最後n*24小時被改變文件數據的文件
查找普通文件/目錄node
find /home/omd -type f (普通文件) find /home/omd -type d (查詢目錄)
只顯示1級目錄文件且過濾自身shell
find ./ -maxdepth 1 -type d ! -name "hhh"
查找一天內被訪問過(access)的文件apache
find /home/omd/ -atime -1 -type f
查詢inode相同的文件安全
find / -inum inode數字
除了某個文件覺得,其他的均刪除spa
find /home/omd/ -type f ! -name h.txt | xargs rm –f ls | grep -v "h.txt" |xargs rm -rf (與上面相似,刪除除了某個文件外的全部文件)
刪除目錄下全部文件htm
find /tmp/ -type f -exec rm -rf {} \; find /tmp/ -type f | xargs rm -rf
查看當前路徑下全部文件的信息:blog
find /tmp/ -type f ! -name a |xargs rm –rf find ./ -type f -exec file {} \;
查找指定時間內修改過的文件ip
# 當前路徑下訪問文件超過2分鐘文件 find ./ -amin +2 # 當前路徑下訪問文件恰好2分鐘的文件 find ./ -amin 2 find ./ -cmin +2 find ./ -mmin +2 find ./ -mtime +2 find ./ -ctime +2 find ./ -mtime +2 find ./ -ctime +2
find / -ctime +20 最近修改文件時間20分鐘之前 find / -mtime +7 修改文件爲7天以前的(最重要) find / -mtime 7 修改文件爲第7天,就是往前推7天 find / -mtime -7 修改文件爲7天以內的
按照目錄或文件的權限來查找文件get
find /opt -perm 777
按大小查找文件
find / -size +10M |sort 【查找大於10M的文件】 find / -size -10M |sort 【查找小於10M的文件】 find / -size 10M |sort 【查找10M的文件】
在test 目錄下查找不在test4子目錄以內的全部文件
find ./test -path "test/test4" -prune -o -print 【可使用-prune選項來指出須要忽略的目錄。在使用-prune選項時要小心,由於若是你同時使用了-depth選項,那麼-prune選項就會被find命令忽略】
查找比yum.log 但不比hhh.txt新的文件
[root@localhost ftl]# find / newer /var/log/yum.log ! -newer ./hhh.txt
查找更改時間在比log2012.log文件新的文件
find ./ -newer log2012.log
在當前目錄下查找文件長度大於1 M字節的文件
find ./ -size +1000000c –print find ./ –size +1M -print
在/home/apache目錄下查找文件長度剛好爲100字節的文件:
find /home/apache -size 100c -print
在當前目錄下查找長度超過10塊的文件
find . -size 10 –print
其餘命令:
find /home/omd/ -name *.txt | while read line; do cp $line /home/omd/h;done for name in `chkconfig | grep 3:on |awk '{print $1}'` ; do echo $name >> h.txt; done; find /home/omd/ -name *.txt | xargs -i cp {} /home/omd/h cat /home/omd/h/he.txt | while read line; do echo $line >> /home/omd/h.txt ; done; cat /home/omd/h.txt | awk 'BEGIN{print "Name "} {print $1}' cat /home/omd/h.txt | xargs -I {} cat {} find . -name "*.txt" |xargs sed -i 's/hhhh/\hHHh/g'
ls -l命令放在find命令的-exec選項中
find . -type f -exec ls -l {} \; 【{} 花括號表明前面find查找出來的文件名】
在目錄中查找更改時間在n日之前的文件並刪除它們
find ./ -mtime +10 -exec rm {} \;
在目錄中查找更改時間在n日之前的文件並刪除它們,在刪除以前先給出提示
find / -mtime +1 -a -name "*.log" -type f -ok cp {} /tmp/ftl \; 【-ok是安全模式,根exec效果同】
-exec中使用grep命令
find /etc -name "passwd*" -exec grep "root" {} \; 【過濾文件內容用】
查找文件移動到指定目錄
find . -name "*.log" -exec mv {} .. \;
用exec選項執行cp命令
find . -name "*.log" -exec cp {} test3 \;
Linux xargs命令詳解