(转)linux下find查找命令用法
find pathname -options [-print -exec -ok ...]
2.命令功能:
用于在文件樹種查找文件,并作出相應的處理?
3.命令參數:
pathname: find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。?
-print: find命令將匹配的文件輸出到標準輸出。?
-exec: find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式為'command' {? } \;,注意{?? }和\;之間的空格。?
-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。
4.命令選項:
-name?? 按照文件名查找文件。
-perm?? 按照文件權限來查找文件。
-prune? 使用這一選項可以使find命令不在當前指定的目錄中查找,如果同時使用-depth選項,那么-prune將被find命令忽略。
-user?? 按照文件屬主來查找文件。
-group? 按照文件所屬的組來查找文件。
-mtime -n +n? 按照文件的更改時間來查找文件, - n表示文件更改時間距現在n天以內,+ n表示文件更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。
-nogroup? 查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。
-nouser?? 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。
-newer file1 ! file2? 查找更改時間比文件file1新但比文件file2舊的文件。
-type? 查找某一類型的文件,諸如:
b - 塊設備文件。
d - 目錄。
c - 字符設備文件。
p - 管道文件。
l - 符號鏈接文件。
f - 普通文件。
-size n:[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節計。-depth:在查找文件時,首先查找當前目錄中的文件,然后再在其子目錄中查找。
-fstype:查找位于某一類型文件系統中的文件,這些文件系統類型通常可以在配置文件/etc/fstab中找到,該配置文件中包含了本系統中有關文件系統的信息。
-mount:在查找文件時不跨越文件系統mount點。
-follow:如果find命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件。
-cpio:對匹配的文件使用cpio命令,將這些文件備份到磁帶設備中。
另外,下面三個的區別:
-amin n?? 查找系統中最后N分鐘訪問的文件
-atime n? 查找系統中最后n*24小時訪問的文件
-cmin n?? 查找系統中最后N分鐘被改變文件狀態的文件
-ctime n? 查找系統中最后n*24小時被改變文件狀態的文件
-mmin n?? 查找系統中最后N分鐘被改變文件數據的文件
-mtime n? 查找系統中最后n*24小時被改變文件數據的文件
5.使用實例:
實例1:查找指定時間內修改過的文件?
命令:
?????????? find -atime -2
輸出:
?
復制代碼 代碼如下:[root@peidachang ~]# find -atime -2
.
./logs/monitor
./.bashrc
./.bash_profile
./.bash_history
?
說明:
超找48小時內修改過的文件?
實例2:根據關鍵字查找?
命令:
find . -name "*.log"
輸出:
?
復制代碼 代碼如下:[root@localhost test]# find . -name "*.log"?
./log_link.log
./log2014.log
./test4/log3-2.log
./test4/log3-3.log
./test4/log3-1.log
./log2013.log
./log2012.log
./log.log
./test5/log5-2.log
./test5/log5-3.log
./test5/log.log
./test5/log5-1.log
./test5/test3/log3-2.log
./test5/test3/log3-3.log
./test5/test3/log3-1.log
./test3/log3-2.log
./test3/log3-3.log
./test3/log3-1.log
?
說明:
在當前目錄查找 以.log結尾的文件。 ". "代表當前目錄?
實例3:按照目錄或文件的權限來查找文件
命令:
find /opt/soft/test/ -perm 777
輸出:
?
復制代碼 代碼如下:[root@localhost test]# find /opt/soft/test/ -perm 777
/opt/soft/test/log_link.log
/opt/soft/test/test4
/opt/soft/test/test5/test3
/opt/soft/test/test3
?
說明:?
查找/opt/soft/test/目錄下 權限為 777的文件
實例4:按類型查找?
命令:
find . -type f -name "*.log"
輸出:
?
復制代碼 代碼如下:[root@localhost test]# find . -type f -name "*.log"
./log2014.log
./test4/log3-2.log
./test4/log3-3.log
./test4/log3-1.log
./log2013.log
./log2012.log
./log.log
./test5/log5-2.log
./test5/log5-3.log
./test5/log.log
./test5/log5-1.log
./test5/test3/log3-2.log
./test5/test3/log3-3.log
./test5/test3/log3-1.log
./test3/log3-2.log
./test3/log3-3.log
./test3/log3-1.log
[root@localhost test]#
?
說明:
查找當目錄,以.log結尾的普通文件?
實例5:查找當前所有目錄并排序
命令:
find . -type d | sort
輸出:
?
復制代碼 代碼如下:[root@localhost test]# find . -type d | sort
.
./scf
./scf/bin
./scf/doc
./scf/lib
./scf/service
./scf/service/deploy
./scf/service/deploy/info
./scf/service/deploy/product
./test3
./test4
./test5
./test5/test3
[root@localhost test]#
?
實例6:按大小查找文件
命令:
find . -size +1000c -print
輸出:
?
復制代碼 代碼如下:[root@localhost test]# find . -size +1000c -print
.
./test4
./scf
./scf/lib
./scf/service
./scf/service/deploy
./scf/service/deploy/product
./scf/service/deploy/info
./scf/doc
./scf/bin
./log2012.log
./test5
./test5/test3
./test3
[root@localhost test]#
?
說明:
查找當前目錄大于1K的文件?
一、Linux中find常見用法示例
·find ?? path??? -option??? [??? -print ]??? [ -exec??? -ok??? command ]??? {} \;
#-print 將查找到的文件輸出到標準輸出
#-exec??? command??? {} \;?????? -----將查到的文件執行command操作,{} 和 \;之間有空格
#-ok 和-exec相同,只不過在操作前要詢用戶 ==================================================== -name??? filename?????????????? #查找名為filename的文件
-perm???????????????????????? #按執行權限來查找
-user???? username????????????? #按文件屬主來查找
-group groupname????????????? #按組來查找
-mtime??? -n +n???????????????? #按文件更改時間來查找文件,-n指n天以內,+n指n天以前
-atime???? -n +n??????????????? #按文件訪問時間來查GIN: 0px">-perm????????????????????????? #按執行權限來查找
-user???? username????????????? #按文件屬主來查找
-group groupname????????????? #按組來查找
-mtime??? -n +n???????????????? #按文件更改時間來查找文件,-n指n天以內,+n指n天以前
-atime???? -n +n??????????????? #按文件訪問時間來查找文件,-n指n天以內,+n指n天以前?
-ctime???? -n +n??????????????? #按文件創建時間來查找文件,-n指n天以內,+n指n天以前?
-nogroup????????????????????? #查無有效屬組的文件,即文件的屬組在/etc/groups中不存在
-nouser?????????????????????? #查無有效屬主的文件,即文件的屬主在/etc/passwd中不存
-newer??? f1 !f2??????????????? 找文件,-n指n天以內,+n指n天以前?
-ctime???? -n +n??????????????? #按文件創建時間來查找文件,-n指n天以內,+n指n天以前?
-nogroup????????????????????? #查無有效屬組的文件,即文件的屬組在/etc/groups中不存在
-nouser?????????????????????? #查無有效屬主的文件,即文件的屬主在/etc/passwd中不存
-newer??? f1 !f2??????????????? #查更改時間比f1新但比f2舊的文件
-type????? b/d/c/p/l/f????????? #查是塊設備、目錄、字符設備、管道、符號鏈接、普通文件
-size?????? n[c]??????????????? #查長度為n塊[或n字節]的文件
-depth??????????????????????? #使查找在進入子目錄前先行查找完本目錄
-fstype?????????????????????? #查更改時間比f1新但比f2舊的文件
-mount??????????????????????? #查文件時不跨越文件系統mount點
-follow?????????????????????? #如果遇到符號鏈接文件,就跟蹤鏈接所指的文件
-cpio???????????????????????? #對匹配的文件使用cpio命令,將他們備份到磁帶設備中
-prune??????????????????????? #忽略某個目錄 ====================================================
$find??? ~??? -name??? "*.txt"??? -print????? #在$HOME中查.txt文件并顯示
$find??? .???? -name??? "*.txt"??? -print
$find??? .???? -name??? "[A-Z]*"??? -pri26nbsp;???? #對匹配的文件使用cpio命令,將他們備份到磁帶設備中
-prune??????????????????????????????? #忽略某個目錄 $find??? .???? -name??? "[A-Z]*"??? -print??? #查以大寫字母開頭的文件
$find??? /etc??? -name??? "host*"??? -print #查以host開頭的文件
$find??? .??? -name??? "[a-z][a-z][0--9][0--9].txt"???? -print??? #查以兩個小寫字母和兩個數字開頭的txt文件
$find .??? -perm??? 755??? -print
$find??? .??? -perm -007??? -exec ls -l {} \;??? #查所有用戶都可讀寫執行的文件同-perm 777
$find??? . -type d??? -print?? 打印目錄結構
$find??? .???!??? -type??? d??? -print??打印非目錄文件?find /usr/include -name '*.h' -exec grep AF_INEF6 {} \;?因grep無法遞歸搜索子目錄,故可以和find相結合使用。 在/usr/include 所有子目錄中的.h文件中找字串AF_INEF6
$find??? .??? -type l??? -print $find??? .??? -size??? +1000000c??? -print???????? #查長度大于1Mb的文件
$find??? .??? -size??? 100c????????? -print??????? # 查長度為100c的文件
$find??? .??? -size??? +10??? -print?????????????? #查長度超過期作廢10塊的文件(1塊=512字節) $cd /
$find??? etc??? home??? apps???? -depth??? -print??? | cpio??? -ivcdC65536??? -o??? /dev/rmt0
$find??? /etc -name "passwd*"??? -exec grep??? "cnscn"??? {}??? \;??? #看是否存在cnscn用戶
$find . -name "yao*"??? | xargs file
$find??? . -name "yao*"??? |??? xargs??? echo???? "" > /tmp/core.log
$find??? . -name "yao*"??? | xargs??? chmod??? o-w ====================================================== find??? -name april*??????????????????????? 在當前目錄下查找以april開始的文件
find??? -name??? april*??? fprint file????????? 在當前目錄下查找以april開始的文件,并把結果輸出到file中
find??? -name ap* -o -name may*??? 查找以ap或may開頭的文件
find??? /mnt??? -name tom.txt??? -ftype vfat??? 在/mnt下查找名稱為tom.txt且文件系統類型為vfat的文件
find??? /mnt??? -name t.txt ! -ftype vfat???? 在/mnt下查找名稱為tom.txt且文件系統類型不為vfat的文件
find??? /tmp??? -name wa* -type l???????????? 在/tmp下查找名為wa開頭且類型為符號鏈接的文件
find??? /home??? -mtime??? -2?????????????????? 在/home下查最近兩天內改動過的文件
find /home???? -atime -1??????????????????? 查1天之內被存取過的文件
find /home -mmin???? +60??????????????????? 在/home下查60分鐘前改動過的文件
find /home??? -amin??? +30??????????????????? 查最近30分鐘前被存取過的文件
find /home??? -newer??? tmp.txt?????????????? 在/home下查更新時間比tmp.txt近的文件或目錄
find /home??? -anewer??? tmp.txt????????????? 在/home下查存取時間比tmp.txt近的文件或目錄
find??? /home??? -used??? -2??????????????????? 列出文件或目錄被改動過之后,在2日內被存取過的文件或目錄
find??? /home??? -user cnscn????????????????? 列出/home目錄內屬于用戶cnscn的文件或目錄
find??? /home??? -uid??? +501?????????????????? 列出/home目錄內用戶的識別碼大于501的文件或目錄
find??? /home??? -group??? cnscn??????????????? 列出/home內組為cnscn的文件或目錄
find??? /home??? -gid 501???????????????????? 列出/home內組id為501的文件或目錄
find??? /home??? -nouser????????????????????? 列出/home內不屬于本地用戶的文件或目錄
find??? /home??? -nogroup???????????????????? 列出/home內不屬于本地組的文件或目錄
find??? /home???? -name tmp.txt???? -maxdepth??? 4??? 列出/home內的tmp.txt 查時深度最多為3層
find??? /home??? -name tmp.txt??? -mindepth??? 3??? 從第2層開始查
find??? /home??? -empty?????????????????????? 查找大小為0的文件或空目錄
find??? /home??? -size??? +512k???????????????? 查大于512k的文件
find??? /home??? -size??? -512k???????????????? 查小于512k的文件
find??? /home??? -links??? +2?????????????????? 查硬連接數大于2的文件或目錄
find??? /home??? -perm??? 0700????????????????? 查權限為700的文件或目錄
find??? /tmp??? -name tmp.txt??? -exec cat {} \;
find??? /tmp??? -name??? tmp.txt??? -ok??? rm {} \; find???? /??? -amin???? -10???????? # 查找在系統中最后10分鐘訪問的文件
find???? /??? -atime??? -2?????????? # 查找在系統中最后48小時訪問的文件
find???? /??? -empty??????????????? # 查找在系統中為空的文件或者文件夾
find???? /??? -group??? cat????????? # 查找在系統中屬于 groupcat的文件
find???? /??? -mmin??? -5?????????? # 查找在系統中最后5分鐘里修改過的文件
find???? /??? -mtime??? -1????????? #查找在系統中最后24小時里修改過的文件
find???? /??? -nouser?????????????? #查找在系統中屬于作廢用戶的文件
find???? /??? -user???? fred???????? #查找在系統中屬于FRED這個用戶的文件
查當前目錄下的所有普通文件?
--------------------------------------------------------------------------------?# find . -type f -exec ls -l {} \;?
-rw-r--r--????? 1 root?????? root????????? 34928 2003-02-25??? ./conf/httpd.conf?
-rw-r--r--????? 1 root?????? root????????? 12959 2003-02-25??? ./conf/magic?
-rw-r--r--????? 1 root?????? root??????????? 180 2003-02-25??? ./conf.d/README?
查當前目錄下的所有普通文件,并在- e x e c選項中使用ls -l命令將它們列出?
=================================================
在/ l o g s目錄中查找更改時間在5日以前的文件并刪除它們:
$ find logs -type f -mtime +5 -exec??? -ok??? rm {} \;?
=================================================
查詢當天修改過的文件
[root@book class]# find??? ./??? -mtime??? -1??? -type f??? -exec??? ls -l??? {} \;?
=================================================
查詢文件并詢問是否要顯示
[root@book class]# find??? ./??? -mtime??? -1??? -type f??? -ok??? ls -l??? {} \;??
< ls ... ./classDB.inc.php > ? y
-rw-r--r--????? 1 cnscn????? cnscn???????? 13709??? 1月 12 12:22 ./classDB.inc.php
[root@book class]# find??? ./??? -mtime??? -1??? -type f??? -ok??? ls -l??? {} \;??
< ls ... ./classDB.inc.php > ? n
[root@book class]# =================================================
查詢并交給awk去處理
[root@book class]# who??? |??? awk??? '{print $1"\t"$2}'
cnscn???? pts/0 =================================================
awk---grep---sed [root@book class]# df??? -k |??? awk '{print $1}' |??? grep??? -v??? 'none' |??? sed??? s"/\/dev\///g"
文件系統
sda2
sda1
[root@book class]# df??? -k |??? awk '{print $1}' |??? grep??? -v??? 'none'
文件系統
/dev/sda2
/dev/sda1
1)在/tmp中查找所有的*.h,并在這些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名 A) find??? /tmp??? -name??? "*.h"??? | xargs??? -n50??? grep SYSCALL_VECTOR
B) grep??? SYSCALL_VECTOR??? /tmp/*.h | cut???? -d':'??? -f1| uniq > filename
C) find??? /tmp??? -name "*.h"??? -exec grep "SYSCALL_VECTOR"??? {}??? \; -print?
2)find / -name filename -exec rm -rf {} \;
???? find / -name filename -ok rm -rf {} \;?
3)比如要查找磁盤中大于3M的文件:
find . -size +3000k -exec ls -ld {} ;?
4)將find出來的東西拷到另一個地方
find *.c -exec cp '{}' /tmp ';' 如果有特殊文件,可以用cpio,也可以用這樣的語法:
find dir -name filename -print | cpio -pdv newdir?
6)查找2004-11-30 16:36:37時更改過的文件
# A=`find ./ -name "*php"` |??? ls -l --full-time $A 2>/dev/null | grep "2004-11-30 16:36:37
二、linux下find命令的用法
1. 基本用法:
????? find / -name 文件名 ???? find ver1.d ver2.d -name '*.c' -print??? 查找ver1.d,ver2.d *.c文件并打印????? find . -type d -print 從當前目錄查找,僅查找目錄,找到后,打印路徑名。可用于打印目錄結構。
2. 無錯誤查找:
????? find / -name access_log 2 >/dev/null
3. 按尺寸查找:
????? find / -size 1500c (查找1,500字節大小的文件,c表示字節)
????? find / -size +1500c (查找大于1,500字節大小的文件,+表示大于)????
????? find / -size +1500c (查找小于1,500字節大小的文件,-表示小于)????
4. 按時間:
????? find / -amin n 最后n分鐘?
????? find / -atime n 最后n天
????? find / -cmin n 最后n分鐘改變狀態
????? find / -ctime n 最后n天改變狀態
5. 其它:
????? find / -empty 空白文件、空白文件夾、沒有子目錄的文件夾
????? find / -false 查找系統中總是錯誤的文件
????? find / -fstype type 找存在于指定文件系統的文件,如type為ext2
????? find / -gid n 組id為n的文件
????? find / -group gname 組名為gname的文件
????? find / -depth n 在某層指定目錄中優先查找文件內容
????? find / -maxdepth levels 在某個層次目錄中按遞減方式查找
6. 邏輯
????? -and 條件與 -or 條件或
7. 查找字符串
????? find . -name '*.html' -exec grep 'mailto:'{}
轉載于:https://www.cnblogs.com/peng-lan/p/9604904.html
總結
以上是生活随笔為你收集整理的(转)linux下find查找命令用法的全部內容,希望文章能夠幫你解決所遇到的問題。