- find:功能強大的檔案搜尋指令。
[root@kvm7 ~]# find [PATH] [option] [action]
參數:
1. 與時間有關的參數:
-atime n :在 n 天之前的『一天之內』被 access 過的檔案;
-ctime n :在 n 天之前的『一天之內』被 change 過狀態的檔案;
-mtime n :在 n 天之前的『一天之內』被 modification 過的檔案;
-newer file :比檔案 file 還新的檔案。
2. 與使用者或群組名稱有關的參數:
-uid n :使用者的帳號 ID,UID=n 的檔案
-gid n :群組名稱的 ID,GID=n 的檔案
-user name :使用者帳號名稱為 name 的檔案
-group name:群組名稱為 name 的檔案
-nouser :檔案的擁有者不存在的檔案
-nogroup :檔案的擁有群組不存在的檔案
3. 與檔案權限及名稱有關的參數:
-name filename:檔案名稱為 filename 的檔案;
-size [+-]SIZE:比 SIZE 還要大(+)或小(-)的檔案。SIZE 的規格有:
c:byte, k:1024bytes。例如:-size +50k。
-type TYPE :檔案的類型為 TYPE 的檔案,類型主要有:一般正規檔案 (f),
裝置檔案 (b, c), 目錄 (d), 連結檔 (l), socket (s),
及 FIFO (p) 等屬性。
-perm mode :檔案屬性『剛好等於』 mode 的檔案
-perm -mode :檔案屬性『必須包含所有 mode 的屬性』的檔案,權限數值大於等於 mode。
-perm +mode :檔案屬性『包含任一 mode 的屬性』的檔案,
例如:-perm +755(-rwxr-xr-x),包含屬性為 -rw------- 的檔案。
4. 額外可進行的動作:
-exec command :-exec 後再接指令 command 來處理搜尋的結果。
-print :將結果列印到螢幕上(預設動作)
- 先找出系統中屬於用戶 deyu3 的檔案,輸出除了標準輸出 (stdout) 及目錄外,還有標準錯誤 (stderr)。
[root@kvm5 ~]# find / -user deyu3
/home/deyu3
/home/deyu3/.bashrc
/home/deyu3/.bash_profile
/home/deyu3/.bash_logout
/var/spool/mail/deyu3
find: ‘/proc/13708/task/13708/fd/6’: No such file or directory
find: ‘/proc/13708/task/13708/fdinfo/6’: No such file or directory
find: ‘/proc/13708/fd/6’: No such file or directory
find: ‘/proc/13708/fdinfo/6’: No such file or directory
- 選項增加 type 指定 f,也就是一般檔案,每一參數都可以使用 [TAB] 提示或補齊,輸出已排除目錄。
[root@kvm5 ~]# find / -user deyu3 -t
-true -type
[root@kvm5 ~]# find / -user deyu3 -type
b c d f l p s
[root@kvm5 ~]# find / -user deyu3 -type f
/home/deyu3/.bashrc
/home/deyu3/.bash_profile
/home/deyu3/.bash_logout
/var/spool/mail/deyu3
find: ‘/proc/13726/task/13726/fdinfo/6’: No such file or directory
find: ‘/proc/13726/fdinfo/6’: No such file or directory
- 將標準錯誤導向到 /dev/null,輸出已排除錯誤訊息。
[root@kvm5 ~]# find / -user deyu3 -type f 2> /dev/n
net/ network_throughput nvram
network_latency null
[root@kvm5 ~]# find / -user deyu3 -type f 2> /dev/null
/home/deyu3/.bashrc
/home/deyu3/.bash_profile
/home/deyu3/.bash_logout
/var/spool/mail/deyu3
- 建立要將檔案複製過去的目標目錄 /root/findresults。
[root@kvm5 ~]# mkdir /root/findresults
- 使用管線命令及 xargs 將 find 命令的標準輸出一個一個送給 cp 命令做為標準輸入,複製到目標目錄 /root/findresults。
[root@kvm5 ~]# find / -user deyu3 -type f 2> /dev/null | xargs cp -t /root/findresults/
- 查詢目標目錄 /root/findresults 內是不是有之前找到的那些檔案?
[root@kvm5 ~]# ls -a /root/findresults/
. .. .bash_logout .bash_profile .bashrc deyu3