find path -option 【 -print 】 【 -exec -ok |xargs |grep 】 【 command {} \; 】
find命令的參數(shù):
1)path:要查找的目錄路徑。
2)print:表示將結(jié)果輸出到標(biāo)準(zhǔn)輸出。
3)exec:對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。
形式為command {} \;,注意{}與\;之間有空格
4)ok:與exec作用相同,
區(qū)別在于,在執(zhí)行命令之前,都會(huì)給出提示,讓用戶確認(rèn)是否執(zhí)行
5)|xargs 與exec作用相同 ,起承接作用
區(qū)別在于|xargs 主要用于承接刪除操作 ,而 -exec 都可用 如復(fù)制、移動(dòng)、重命名等
6)options:表示查找方式
options常用的有下選項(xiàng):
-namefilename #查找名為filename的文件
-perm #按執(zhí)行權(quán)限來查找
-userusername#按文件屬主來查找
-group groupname#按組來查找
-mtime-n +n #按文件更改時(shí)間來查找文件,-n指n天以內(nèi),+n指n天以前
-atime-n +n #按文件訪問時(shí)間來查找文件,-n指n天以內(nèi),+n指n天以前
-ctime-n +n #按文件創(chuàng)建時(shí)間來查找文件linux命令,-n指n天以內(nèi),+n指n天以前
-nogroup #查無有效屬組的文件,即文件的屬組在/etc/groups中不存在
-nouser #查無有效屬主的文件,即文件的屬主在/etc/passwd中不存
-typeb/d/c/p/l/f #查是塊設(shè)備、目錄、字符設(shè)備、管道、符號(hào)鏈接、普通文件
-sizen[c] #查長(zhǎng)度為n塊[或n字節(jié)]的文件
-mount #查文件時(shí)不跨越文件系統(tǒng)mount點(diǎn)
-follow #如果遇到符號(hào)鏈接文件,就跟蹤鏈接所指的文件
-prune #忽略某個(gè)目錄
下面通過一些簡(jiǎn)單的例子來介紹下find的常規(guī)用法:
1、按名字查找
在當(dāng)前目錄及子目錄中,查找大寫字母開頭的txt文件
$ find . -name '[A-Z]*.txt' -print
在/etc及其子目錄中,查找host開頭的文件
$ find /etc -name 'host*' -print
在$HOME目錄及其子目錄中,查找所有文件
$ find ~ -name '*' -print
在當(dāng)前目錄及子目錄中,查找不是out開頭的txt文件
$ find . -name "out*" -prune -o -name "*.txt" -print
2、按目錄查找
在當(dāng)前目錄除aa之外的子目錄內(nèi)搜索 txt文件
linuxusm:/mnt # find /mnt/ -path /mnt/test -prune -o -name abc -print。$ find /apps -name "/apps/bin" -prune -o -print。$ find /apps -path "/apps/bin" -prune -o -print。
在當(dāng)前目錄及除aa和bb之外的子目錄中查找txt文件
$ find . \( -path './dir0' -o -path './dir1' \) -a -prune -o -name '*.txt' -print
注意:在1、2處都需要加空格,否則會(huì)出現(xiàn)如圖所示的報(bào)錯(cuò)
在3處加不加%20-a都可以
在當(dāng)前目錄linux命令,不再子目錄中,查找txt文件
%20-name%20"."%20-type%20d%20-prune%20-o%20-type%20f%20-name%20"*.jpg" -print。ind ~/a-path "~/a/aa" -prune -o -name "*.txt" -print。find . -type f -name '*.txt' -exec sed -i "s/{find}/{replace}/g" {} 。