find ... -exec rm {} ;
find ... | xargs rm -rf
兩者都可以把find命令查找到的結(jié)果刪除媳否,
其區(qū)別簡單的說是前者是把find發(fā)現(xiàn)的結(jié)果一次性傳給exec選項(xiàng)赞厕,這樣當(dāng)文件數(shù)量較多的時(shí)候,就可能會(huì)出現(xiàn)“參數(shù)太多”之類的錯(cuò)誤鞋邑,相比較而言,后者就可以避免這個(gè)錯(cuò)誤,因?yàn)閤args命令會(huì)分批次的處理結(jié)果瞒渠。
這樣看來,“find ... | xargs rm -rf”是更通用的方法技扼,推薦使用伍玖!
rm不接受標(biāo)準(zhǔn)輸入,所以不能用find / -name "tmpfile" |rm
-exec 必須由一個(gè) ; 結(jié)束剿吻,而因?yàn)橥ǔ? shell 都會(huì)對(duì) ; 進(jìn)行處理窍箍,所以用 ; 防止這種情況。
{} 可能需要寫做 '{}'丽旅,也是為了避免被 shell 過濾
find ./ -type f -exec grep iceskysl {} /dev/null ;
./表示從當(dāng)前目錄找
-type f椰棘,表示只找file,文件類型的榄笙,目錄和其他字節(jié)啥的不要
-exec 把find到的文件名作為參數(shù)傳遞給后面的命令行邪狞,代替{}的部分
-exec后便跟的命令行,必須用“ ;”結(jié)束
find ./ -type f -name "*.cpp"|xargs grep "test" -n
find . -name "*cpp" -exec grep "test" {} ; -print
find ... -exec rm {} ;
親測有效
find ... | xargs rm -rf
親測會(huì)留下一些有特殊字符的文件