find 是我們很常用的一個Linux命令,但是我們一般查找出來的額並不僅僅是看看而已,還會有進一步的操作,這個時候exec的作用就顯現出來了。
exec解釋:
-exec 參數后面跟的是 command 命令,它的終止是以“;”為結束標志的,所以這句命令后面的分號是不可缺少的,考慮到各個系統中分號會有不同的意義,所以前面加反斜杠。
{} 花括號代表前面find查找出來的文件名。
使用find時,只要把想要的操作寫在一個文件里,就可以用exec來配合find 查找,很方便的。在有些操作系統中,只允許 -exec 選項執行諸如 ls 或 ls -l 這樣的命令。大多數用戶使用着一些選項是為了查找舊文件並刪除它們。建議再真正執行 rm 命令刪除文件之前,最好先用 ls 命令看一下,確認他們是所要刪除的文件。 exec 選項后面跟隨着所要執行的命令或腳本,然后是一對兒{},一個空格和一個\,最后是一個分號。為了使用 exec 選項,必須要同時使用 print 選項。如果驗證一下 find 命令,會發現該命令只輸出從當前路徑起的相對路徑及文件名。
實例1:ls -l 命令放在 find 命令的 -exec 選項中
命令:
find . -type f -exec ls -l {} \; find 命令匹配到了當前目錄下的所有普通文件,並在 -exec 選項中使用 ls -l 命令將它們列出。
這個命令有點坑,不過確實很好用,說它坑是因為我輸入的時候 收到提示: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 不進去。