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


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

 

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM