轉(zhuǎn)載自:https://cjjwzs.iteye.com/blog/1148129
前言:最近幾天使用find的高級功能,但執(zhí)行到 -exec命令的時(shí)候總是提示錯(cuò)誤
信息如下:“find: missing argument to `-ok' ”,花了點(diǎn)時(shí)間,研究了下幫助(man),終于是搞清楚了。
說明:find命令linux命令,配合-exec參數(shù),可以對查詢的文件進(jìn)行進(jìn)一步的操作,可以得到很多有用的功能,比如說文件包含特定字符串的查詢等linux命令,要了解這個(gè)功能,最簡單直接的就是看find命令幫助,列出
-exec command ;
Execute command; true if 0 status is returned. All following arguments to find are taken to be arguments to the command until an argument consisting of #;' is encountered. The string {}' is replaced by the current file name being processed everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find. Both of these constructions might need to be escaped (with a \') or quoted to protect them from expansion by the shell. The command is executed in the starting directory.
其實(shí)只要讀懂這段話就理解了
廢話少說,這里簡單說明一下
-exec 參數(shù)后面跟的是 command命令,注意點(diǎn)如下:
command命令的終止,使用 ';' (分號)來判定,在后面必須有一個(gè) ';'
'{}',使用{}來表示文件名,也就是find前面處理過程中過濾出來的文件,用于command命令進(jìn)行處理
特別強(qiáng)調(diào),對于不同的系統(tǒng),直接使用分號可能會(huì)有不同的意義, 使用轉(zhuǎn)義符 '\'在分號前明確說明,對于前面我們遇到的問題,主要就是這個(gè)原因引起的!
舉例:
1.查詢所有保護(hù)字符串“Hello”的文件
find / -exec grep "Hello" {} \;
2.刪除所有臨時(shí)文件
find / -name "*.tmp" -exec rm -f {} \;