查找文件!!!
- 命令格式:find [PATH] [option] [action]
一、參數1——與時間有關的參數
- -atime、-ctime、-mtime
-mtime n:在n天之前的“一天之內”被更改過的文件名
-mtime +n:在n天之前(不含n天本身)被更改過的文件名
-mtime -n:在n天之內(含n天本身)被更改過的文件名
-newer file:比file還要新的文件名
注:這三個基於時間的參數的計量單位是“天”,天數前面帶的-代表小於,而+代表大於。
范例一:將過去系統上面24小時內有改動(mtime)的文件列出
執行命令:find / -mtime 0
評講:0代表目前的時間,所以,從現在開始到24小時前,有改動內容的文件都會被列出來。
范例二:將過去系統上面3天前的24小時內有改動(mtime)的文件列出
執行命令:find / -mtime 3
范例三:尋找/etc下面的文件,如果文件日期比/etc/passwd新就列出
執行命令:find /etc -newer /etc/passwd
二、參數2——與用戶或用戶組名有關的參數
- -uid UID、-gid GID、-user 用戶賬號名稱、-group 用戶組名
- -nouser:尋找文件的所有者不存在於/etc/passwd的文件
- -nogroup:尋找文件的所有用戶組不存在於/etc/group中的文件
范例一:查找/home下面屬於liuyu的文件
執行命令:find /home -user liuyu
評價:這個命令可以將屬於某個用戶的所有文件都找出來
范例二:查找系統中不屬於任何人的文件
執行命令:find / -nouser
三、參數3——與文件權限及名稱有關的參數
- -name 文件名:根據文件名查找文件
- -size [+-]SIZE:查找比SIZE還要大(+)或小(-)的文件
- -type TYPE:查找文件類型為TYPE的
- -perm mode:查找文件權限“剛好等於”mode的文件
- -perm -mode:查找文件權限“必須要全部包括mode的權限”的文件
- -perm +mode:查找文件權限“包含任一mode的權限”的文件
范例一:找出文件名為passwd的這個文件
執行命令:find / -name passwd
范例二:找出系統中大於1MB的文件
執行命令:find / -size +1000k
范例三:找出/var目錄下文件類型為Socket的文件名有哪些
執行命令:find /var -type s
范例四:查找文件當中含有SGID或SUID或SBIT的屬性
執行命令:find / -perm +7000
四、其他可進行的操作
- -exec 命令:-exec后面可再接其他的命令來處理查到的結果
- -print:將結果打印到屏幕上,這個操作是默認操作
范例一:將上一范例找到的文件使用ls -l列出來
執行命令:find / -perm +7000 -exec ls -l {} \;
【評講】
- {}:代表的是“由find找到的內容”,我們可以想象find的結果會被放置到{}位置中
- {}是一個與-exec選項搭配使用的特殊字符串,對於每一個匹配的文件,{}會被替換成相應的文件名
- -exec一直到\;是關鍵字,代表find額外命令的開始(-exec)到結束(\;),在這中間的就是find命令內的額外命令。在本例中就是“ls -l {}”
- 因為“;”在bash環境下是有特殊意義的,因此利用反斜杠來轉義
- 如:find . -name "*.txt" -exec cp {} 某個目錄 \; //將當前目錄下的以.txt結尾的文本文件復制到
五、其他
- find 目錄
列出當前目錄及子目錄下所有的文件和文件夾
注:和ls的區別在於子目錄下的文件和目錄也會被列出來
- find 目錄 -maxdepth 深度n
- find 目錄 -mindepth 深度n
注:深度n來限制find命令遍歷的目錄深度,-maxdepth指定最大深度,而mindepth指定最小深度。
如:find . -maxdepth 1 的作用效果就等同於 ls
- find 目錄 -type d|f|l|c|b|s|p
如:find . -type f 列出當前目錄下的文件
- find 目錄 -size +2k 大於2KB的文件
- find 目錄 -size -3M 小於3MB的文件