語法:
find [搜尋路徑] -name "[檔名]" [選項參數]
常用選項:
---------------------------- ----------------------------
-name [filename] 找出符合 [filename] 的檔案
-exec [command] {}\; 執行 [command]
-type [d] or [f] 找目錄或是檔案
-print 每個檔案以 \n 為間隔, 預設
-print0 連續輸出檔案 (符合 xargs -0)
範例:
1. 在 /usr 找 mysql_install_db* :
find /usr -name "mysql_install_db*" -print
2. 設定目前所有的子目錄權限 0777 而所有檔案的權限 0664:
find ./ -type d -exec chmod 777 {}\;
find ./ -type f -exec chmod 664 {}\;
3. 在 /home 裡找出所有 *.cmd 並刪除
find /home -name "*.cmd" -exec rm {}\;
find /home -name "*.cmd" | xargs rm
4. 下面這兩種方法都可以找出目錄下 .c 檔中有 'modprobe' 的行:
find . -name "*.c" | xargs grep modprobe
grep -r --include="*.c" modprobe .
Tips:
* -exec 必須由一個 ; 結束,而通常 shell 都會對 ; 進行處理,所以用 \; 防止這種情況。
* {} 可能需要寫做 '{}',也是為了避免被 shell 過濾。
* find 的 -exec 指令,在檔案過多時會出現參數太多的 error,最好用 xargs。
* -name 選項支援 shell 的 wildcard 如 * ? 等,相對來說, shell 保留字如 [ 與 ] 等也需要用 \ 來跳脫。
沒有留言:
張貼留言