日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

find之exec和args

發布時間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 find之exec和args 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本來以為以前的差不多夠用了。呵呵,看到很多高手用高技巧,心癢癢的覺得我自己還可以提升啊。。哈哈哈。

這個實踐起來之后,,SED,AWK也得深化一下,,,SHELL和PYTHON,作運維的兩樣都不能廢。。。

~~~~~~~~~~~~~~~~~~~~~

find . -name "*.txt" -exec rm {} \;
find . -name "*.txt" | xargs rm {}?


-exec
? ? 1.參數是一個一個傳遞的,傳遞一個參數執行一次rm
? ? 2.文件名有空格等特殊字符也能處理
-xargs?
? ? 1.一次將參數傳給命令,可以使用-n控制參數個數
? ? 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命令查找到的結果刪除,其區別簡單的說是前者是把find發現的結果一次性傳給exec選項,后者xargs命令會分批次的處理結果。
xargs優點:由于是批處理的,所以執行效率比較高(通過緩沖方式)
xargs缺點:有可能由于參數數量過多(成千上萬),導致后面的命令執行失敗
若換成 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,文件類型的,目錄和其他字節啥的不要
-mtime +30 表示30天前的文件。
-exec 把find到的文件名作為參數傳遞給后面的命令行,代替{}的部分?
-exec后便跟的命令行,必須用“ \;”結束
?/dev/null 2>&1 這樣的寫法.這條命令的意思是將標準輸出和錯誤輸出全部重定向到/dev/null中,也就是將產生的所有信息丟棄. ~~~~~~~~~~~~~~~~~~~~~~~~

一、find 命令格式


1、find命令的一般形式為;

find pathname -options [-print -exec -ok ...]


2、find命令的參數;

pathname: find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。 -print: find命令將匹配的文件輸出到標準輸出。 -exec: find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式為'command' {} \;,注意{}和\;之間的空格。 -ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。


3、find命令選項

-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小時被改變文件數據的文件


4、使用exec或ok來執行shell命令

使用find時,只要把想要的操作寫在一個文件里,就可以用exec來配合find查找,很方便的

在有些操作系統中只允許-exec選項執行諸如l s或ls -l這樣的命令。大多數用戶使用這一選項是為了查找舊文件并刪除它們。建議在真正執行rm命令刪除文件之前,最好先用ls命令看一下,確認它們是所要刪除的文件。

exec選項后面跟隨著所要執行的命令或腳本,然后是一對兒{ },一個空格和一個\,最后是一個分號。為了使用exec選項,必須要同時使用print選項。如果驗證一下find命令,會發現該命令只輸出從當前路徑起的相對路徑及文件名。

轉載于:https://www.cnblogs.com/aguncn/p/4133924.html

總結

以上是生活随笔為你收集整理的find之exec和args的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。