find 是咱們很經常使用的一個Linux命令,可是咱們通常查找出來的額並不單單是看看而已,還會有進一步的操做,這個時候exec的做用就顯現出來了。shell
exec解釋:安全
-exec 參數後面跟的是 command 命令,它的終止是以「;」爲結束標誌的,因此這句命令後面的分號是不可缺乏的,考慮到各個系統中分號會有不一樣的意義,因此前面加反斜槓。 spa
{} 花括號表明前面find查找出來的文件名。操作系統
使用find時,只要把想要的操做寫在一個文件裏,就能夠用exec來配合find 查找,很方便的。在有些操做系統中,只容許 -exec 選項執行諸如 ls 或 ls -l 這樣的命令。大多數用戶使用着一些選項是爲了查找舊文件並刪除它們。建議再真正執行 rm 命令刪除文件以前,最好先用 ls 命令看一下,確認他們是所要刪除的文件。 exec 選項後面跟隨着所要執行的命令或腳本,而後是一對兒{},一個空格和一個\,最後是一個分號。爲了使用 exec 選項,必需要同時使用 print 選項。若是驗證一下 find 命令,會發現該命令只輸出從當前路徑起的相對路徑及文件名。test
實例1:ls -l 命令放在 find 命令的 -exec 選項中grep
命令:command
find . -type f -exec ls -l {} \; find 命令匹配到了當前目錄下的全部普通文件,並在 -exec 選項中使用 ls -l 命令將它們列出。im
這個命令有點坑,不過確實很好用,說它坑是由於我輸入的時候 收到提示:find 遺漏 -exec 的參數,^^腳本
解決:1.注意 是一對兒{},一個空格和一個\,最後是一個分號移動
2. 在 \; 使用 「\;」 '\;' 這樣把它們引發來。【「引發來」,感受怪彆扭的,不過想不出來怎麼描述】
實例2:在目錄中查找更改時間在n 日之前的文件並刪除它們
命令:
find . -type f -mtime +14 -exec rm {} \; 在 shell 中用任何方式刪除文件以前,應當先查看相應的文件,必定要當心,當使用諸如 mv 或 rm 命令時,
可使用-exec 選項的安全模式,他將對每一個匹配到的文件進行操做以前提示你。
實例3:在目錄中查找更改時間在n日之前的文件並刪除它們,在刪除以前先給出提示
命令:
find . -name "*.log" -mtime +5 -ok rm {} \; 查找當前目錄中全部以 .log 結尾的,更改時間在 5 日以上的文件,並刪除它們,而且在刪除以前先給出提示。按y 鍵肯定,n 鍵 取消。
實例4: -exec 中使用 grep 命令
命令:
find /etc -name "passwd" -exec grep "root" {} \;
任何形式的命令均可以在 -exec 選項中使用。 在上面的例子中咱們使用 grep 命令。find命令首先匹配全部文件名爲「passwd」的文件,而後執行 grep 命令查看這些文件中是否存在一個 root 用戶。
實例5:查找文件並移動到指定目錄
命令:
find . -name "*.log" -exec mv {} .. \; .. 是路徑名
實例6:用exec選項執行 cp 命令
命令:
find . -name "*.log" -exec cp {} test3 \; 一不當心又中招了,test3 是個目錄,否則cp 不進去。