天天看點

Linux find指令之exec

exec概述

find是我們很常用的一個Linux指令,但是我們一般查找出來的并不僅僅是看看而已,還會有進一步的操作,這個時候exec的作用就顯現出來了。 

exec解釋:

-exec  參數後面跟的是command指令,它的終止是以;為結束标志的,是以這句指令後面的分号是不可缺少的,考慮到各個系統中分号會有不同的意義,是以前面加反斜杠。

{}   花括号代表前面find查找出來的檔案名。

使用find時,隻要把想要的操作寫在一個檔案裡,就可以用exec來配合find查找,很友善的。在有些作業系統中隻允許-exec選項執行諸如ls或ls -l這樣的指令。大多數使用者使用這一選項是為了查找舊檔案并删除它們。建議在真正執行rm指令删除檔案之前,最好先用ls指令看一下,确認它們是所要删除的檔案。exec選項後面跟随着所要執行的指令或腳本,然後是一對兒{ },一個空格和一個\,最後是一個分号。為了使用exec選項,必須要同時使用print選項。如果驗證一下find指令,會發現該指令隻輸出從目前路徑起的相對路徑及檔案名。

exec的幾個例子

删除檔案

如果使用如下指令,你可以使用 ​​find​​ 指令定位并删除檔案:

[root@www tmp]# find . -type f -name "file*" | wc -l
9
[root@www tmp]# find . -type f -name "file*" -exec  rm -rf {} \;
[root@www tmp]# find . -type f -name "file*" | wc -l
0      

​{}​

​ 代表根據搜尋條件找到的每個檔案的名稱。

一個非常有用的選項是将 ​

​-exec​

​​ 替換為 ​

​-ok​

​​。當你這樣做時,​​find​​ 會在删除任何檔案之前要求确認。

[root@www tmp]# find . -type f -name "file*" -ok rm -rf {} \;
< rm ... ./file1 > ? 
< rm ... ./file2 > ?       

找到權限為777的檔案并改為644

# find / -type f -perm 0777 -print -exec chmod 644 {} \;      
# find / -type d -perm 777 -print -exec chmod 755 {} \;      

繼續閱讀