find之exec和args
本來以為以前的差不多夠用了。呵呵,看到很多高手用高技巧,心癢癢的覺得我自己還可以提升啊。。哈哈哈。
這個實踐起來之后,,SED,AWK也得深化一下,,,SHELL和PYTHON,作運維的兩樣都不能廢。。。
~~~~~~~~~~~~~~~~~~~~~
find . -name "*.txt" -exec rm {} \;
find . -name "*.txt" | xargs rm {}?
-exec
? ? 1.參數(shù)是一個一個傳遞的,傳遞一個參數(shù)執(zhí)行一次rm
? ? 2.文件名有空格等特殊字符也能處理
-xargs?
? ? 1.一次將參數(shù)傳給命令,可以使用-n控制參數(shù)個數(shù)
? ? 2.處理特殊文件名需要采用如下方式:
? ? find . -name "*.txt" print0 |xargs -0 rm {}?
~~~~~~~~~~~~~~~
相比之下,也不難看出各自的缺點 1、exec 每處理一個文件或者目錄,它都需要啟動一次命令,效率不好;? 2、exec 格式麻煩,必須用 {} 做文件的代位符,必須用 \; 作為命令的結束符,書寫不便。 3、xargs 不能操作文件名有空格的文件; 綜上,如果要使用的命令支持一次處理多個文件,并且也知道這些文件里沒有帶空格的文件,那么使用 xargs比較方便; 否則,就要用 exec了。 ~~~~~~~~~~~~~~~~~~~~ 一般有2中寫法:
#find ... -exec rm {} \;?
#find ... | xargs rm -rf
兩者都可以把find命令查找到的結果刪除,其區(qū)別簡單的說是前者是把find發(fā)現(xiàn)的結果一次性傳給exec選項,后者xargs命令會分批次的處理結果。
xargs優(yōu)點:由于是批處理的,所以執(zhí)行效率比較高(通過緩沖方式)
xargs缺點:有可能由于參數(shù)數(shù)量過多(成千上萬),導致后面的命令執(zhí)行失敗
若換成 find ....-execrm {} \; 的話,
因為rm 是"逐個" item 去處理的, 則無此憂慮
rm不接受標準輸入,所以不能用find / -name "tmpfile" |rm
-exec 必須由一個 ; 結束,而因為通常 shell 都會對 ; 進行處理,所以用 \; 防止這種情況。?
{} 可能需要寫做 '{}',也是為了避免被 shell 過濾。
例子:
cd /home/useway/DataBackup
find ./ -type f -mtime +30 -exec rm -fr {} \; > /dev/null 2>&1
./表示從當前目錄找?
-type f,表示只找file,文件類型的,目錄和其他字節(jié)啥的不要
-mtime +30 表示30天前的文件。
-exec 把find到的文件名作為參數(shù)傳遞給后面的命令行,代替{}的部分?
-exec后便跟的命令行,必須用“ \;”結束
?/dev/null 2>&1 這樣的寫法.這條命令的意思是將標準輸出和錯誤輸出全部重定向到/dev/null中,也就是將產(chǎn)生的所有信息丟棄. ~~~~~~~~~~~~~~~~~~~~~~~~
一、find 命令格式
1、find命令的一般形式為;
2、find命令的參數(shù);
3、find命令選項
另外,下面三個的區(qū)別:
?? -amin n 查找系統(tǒng)中最后N分鐘訪問的文件-atime n 查找系統(tǒng)中最后n*24小時訪問的文件-cmin n 查找系統(tǒng)中最后N分鐘被改變文件狀態(tài)的文件-ctime n 查找系統(tǒng)中最后n*24小時被改變文件狀態(tài)的文件-mmin n 查找系統(tǒng)中最后N分鐘被改變文件數(shù)據(jù)的文件-mtime n 查找系統(tǒng)中最后n*24小時被改變文件數(shù)據(jù)的文件
4、使用exec或ok來執(zhí)行shell命令
使用find時,只要把想要的操作寫在一個文件里,就可以用exec來配合find查找,很方便的
在有些操作系統(tǒng)中只允許-exec選項執(zhí)行諸如l s或ls -l這樣的命令。大多數(shù)用戶使用這一選項是為了查找舊文件并刪除它們。建議在真正執(zhí)行rm命令刪除文件之前,最好先用ls命令看一下,確認它們是所要刪除的文件。
exec選項后面跟隨著所要執(zhí)行的命令或腳本,然后是一對兒{ },一個空格和一個\,最后是一個分號。為了使用exec選項,必須要同時使用print選項。如果驗證一下find命令,會發(fā)現(xiàn)該命令只輸出從當前路徑起的相對路徑及文件名。
轉載于:https://www.cnblogs.com/aguncn/p/4133924.html
總結
以上是生活随笔為你收集整理的find之exec和args的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【随笔】Win7下GVIM的安装与配置
- 下一篇: 微信公众号教程(13)公司通讯录开发 上