天天一個Linux命令(20)--find命令之exec

  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 不進去。 

相關文章
相關標籤/搜索