Linux find命令詳解

2022-07-03 20:06:10 字數 3920 閱讀 9894

linux下find命令在目錄結構中搜尋檔案,並執行指定的操作。linux下find命令提供了相當多的查詢條件,功能很強大

命令選項:-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:在查詢檔案時,首先查詢當前目錄中的檔案,然後再在其子目錄中查詢。

另外,下面三個的區別:

-amin n 查詢系統中最後n分鐘訪問的檔案

-atime n 查詢系統中最後n*24小時訪問的檔案

-cmin n 查詢系統中最後n分鐘被改變檔案狀態的檔案

-ctime n 查詢系統中最後n*24小時被改變檔案狀態的檔案

-mmin n 查詢系統中最後n分鐘被改變檔案資料的檔案

-mtime n 查詢系統中最後n*24小時被改變檔案資料的檔案

查詢普通檔案/目錄

find /home/omd -type f  (普通檔案)

find /home/omd -type d (查詢目錄)

只顯示1級目錄檔案且過濾自身

find ./ -maxdepth 1  -type d  ! -name "hhh"
查詢一天內被訪問過(access)的檔案

find /home/omd/ -atime -1 -type f
查詢inode相同的檔案

find / -inum inode數字
除了某個檔案以為,其餘的均刪除

find /home/omd/ -type f ! -name h.txt  | xargs  rm –f  

ls | grep -v "h.txt" |xargs rm -rf (與上面類似,刪除除了某個檔案外的所有檔案)

刪除目錄下所有檔案

find /tmp/ -type f -exec rm -rf {} \;

find /tmp/ -type f | xargs rm -rf

檢視當前路徑下所有檔案的資訊:

find /tmp/ -type f ! -name a |xargs rm –rf

find ./ -type f -exec file {} \;

查詢指定時間內修改過的檔案

# 當前路徑下訪問檔案超過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天之內的

按照目錄或檔案的許可權來查詢檔案

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 ''` ; 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 '

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命令詳解

Linux find命令詳解

在linux上查詢某個檔案確實是一件比較麻煩的事情。畢竟在linux中需要我們使用專用的 查詢 命令來尋找在硬碟上的檔案。linux下的檔案表達格式非常複雜,不象windows,dos下都是統一的aaa.bbb格式那麼方便查詢,在windows中,只要知道要查詢的檔案的檔名或者字尾就非常容易查詢到。...

linux find命令詳解

pathname find命令所查詢 的目錄路徑。例如用.來表示當前目錄,用 來表示系統根目錄 print find命令將匹配的檔案輸出到標準輸出 exec find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為 command 注意和 之間的空格。ok 和 exec的作用相同,...

Linux find命令詳解

用法總結如下 find pathname options print exec ok pathname 查詢路徑 option 主要選項如下 name 按照檔名稱查詢 perm 按照檔案許可權查詢 prune 不在當前指定的路徑查詢。如果同時指定了 depth選項,則prune被忽略 user 按照...