find參數說明:
find有很多參數是以動作首字母+時間的方式用於按訪問、改變、更新時間來篩選文件。
動作表達:
-
a(last accessed) 最近一次訪問時間
-
c(last changed) 最近一次改變時間
- m(last modified) 最近一次修改時間
注意此上的c和m的區別,c是change,包括文件的權限、文件名的更改都算,但是m,只有文件的本身的內容更改纔算修改。
時間單位的表達:
-min(minutes) 分鐘
-time 小時
-newer 文件最近一次操作(操作類型取決於前面的字母)晚於文件的修改時間
例子:
find /home -atime +10 -name "*.*"
#查找home目錄下10天內未訪問的文件
這裏的-name 參數匹配文件名,.表示匹配所有文件,atime的值+10,表示10天之前,若是-10表示10天之內,10(沒有加減號)表示10天。
執行刪除命令
上述操作用於查找文件,查到目標文件後刪除
-exec參數,如果查找有返回,可在exec參數後加上需要操作的命令,查找結果用{}來代替
查找10天內未被修改的文件並刪除命令:
find . -ctime +30 -name "." -exec rm -Rf {} \;
建立腳本
在home目錄下建立文件夾cshell,建立文件rm-old.sh
$mkdir ~/cshell
$vi ~/cshell/rm-old.sh
腳本內容:
#!/bin/bash
find . -atime +30 -name "." -exec rm -Rf {} \;
echo "current floder is :";
pwd;
echo "file is deleted."
存入環境變量,打開文件~/.bashrc,在最後一行添加:
export PATH=${PATH}:$HOME/cshell
使環境變量修改生效:
$source ~/.bashrc
在想刪除舊文件的地方執行即可:
$rm-old.sh
更多find命令使用舉例
1.查找沒有777權限的文件
find . -type f ! -perm 777
2.查找只讀文件
find . -perm /u=r
3.查找空目錄
find . -type d -empty
4.查找某用戶的文件
find . -user cgz
END~