find命令格式
find pathname --options [-exec -print -ok ..]
find命令參數
pathname:find命令尋找的目錄路徑-print:find命令將匹配的檔案輸出到標準輸出-exec:find命令對匹配的檔案執行該參數給出的shell命令.格式為: command {} \;-ok:類似與exec的作用
find命令選項
-name:按照檔案名稱進行尋找-perm:按檔案許可權來尋找-user:按檔案的使用者主尋找-group:按檔案的使用者組尋找-type:尋找某一類型的檔案b -- 塊裝置檔案 d -- 目錄 c -- 字元裝置檔案 p -- 管道檔案 l -- 符號連結檔案 f -- 普通檔案-mtime:按照檔案的更改時間來尋找檔案-n -- 表示檔案更改時間距現在n天以內 +n -- 表示檔案更改時間距現在n天以前
日誌遷移指令碼 使用了find命令的mtime參數,將2個星期前的記錄檔統一遷移到指定目錄下,有需要的同學可以參考
#!/bin/bash#1.標準定義backup_dir="/backup/log"keep_days=14week_num=`date +%W`flag=`expr $week_num % 2`#2.需要遷移目錄test1="/var/log/nginx/test1"migrate_dir=($test1)#3.遷移備份,每兩周執行一次if [ $flag -eq 1 ];thenfor dir in ${clean_dir[*]}doif [ -d $dir ]; then#構建遷移目錄if [ ! -d $backup_dir$dir ];thenmkdir -p $backup_dir$dirfi#檔案遷移for file in `find $dir -type f -mtime +$keep_days -exec ls {} \;`domv $file $backup_dir$dirdonefidonefi
Crontab每兩周執行日誌遷移指令碼
#日誌定期遷移指令碼0 4 * * 7/2 /home/wangzhengyi/scripts/clean-scripts/migrate.sh
按檔案大小尋找 find命令的size參數可以按照檔案大小進行尋找,size的大小選項如下:
例如我要尋找指定目錄下大於10k的檔案,可以這樣寫命令: