find 指令與 -exec

今天為了處理主機裡 Wordpress 安裝主題時,會將新安裝的主題目錄和檔案 group 設定為 ftp 使用的帳號,這樣會造成 Wordpress 無法寫入。所以查了一下,發現原來可以把目錄設定為 Set Group ID,如此不論底下的檔案/目錄是誰建立的,其群組都會設定為該目錄的群組。查的同時也看到有人提供一個 find 指令,可在查詢的同時把查到的錄設為 Set Group ID,大約是這樣:
find /var/www/abc -type d -exec chmod 2775 {} \;

因為有用過 find 指令所以前半部還好,但是後面的「{} \;」完全看不懂在寫什麼。不懂的情況下要拿來用覺得不太安心,因此就來去查了一下這整段指令寫的是什麼鬼東西。

先來點簡單明瞭的,「-type d」代表要找目錄,找到之後「-exec」後面接針對目標要執行的指令。「\;」代表指令結束,所以上面的指令在找到目標後會執行的指令就是「chmod 2775 {}」。那「{}」呢?它代表的是 find 所找到的目標,在這個情況下,就是你所找到的目錄。所以假設 /var/www/abc 底下有個目錄叫 def,找到之後就會執行「chmod 2775 /var/www/abc/def」。如此一來 abc 下的 def 目錄就會被設為 Set Group ID。

留言

這個網誌中的熱門文章

Unix 重新導向跟 2>&1

薰衣草茶實驗中...

用 HTML mailto 屬性指定標題與信件內容