查詢檔案是非常常見的系統操作,linux可以使用find命令來進行檔案查詢,用好find命令,會讓你感受到前所未有的痛快。find有眾多選項和引數,熟練運用它們,你才能真正感受到find命令的強大,總結如下。
命令格式:
find pathname -option [-print] [-exec -ok command {} \;]
pathname 表示檔案查詢的基目錄,若不寫,預設為當前目錄./
find支援按以下方面進行查詢:
1、按檔名: -name ,-iname
find -iname "*test*"
#查詢檔案名含有test(不區分大小寫)的檔案
find -name
"*.py"
#查詢以.py結尾的檔案
2、按檔案型別:-type
支援型別
說明示例
f普通檔案
find /tmp -type f
d目錄
find /tmp -type d
b塊裝置
find /tmp -type b
c字元裝置
find /tmp -type c
l符合鏈結檔案
find /tmp -type l
p命令管道檔案
find /tmp -type p
s套接字檔案
find /tmp -type s
3、按檔案所有者、所屬組選項
引數說明
示例-user
username
根據屬主查詢
find -user mysql
-group
group
根據屬組查詢
find -group root
-uid
uid根據uid查詢
find -uid 999
-gid
gid根據gid查詢
find -gid 888
-nouser
查詢沒有屬主的檔案
find -nouser
-nogroup
查詢沒有屬組的檔案
find -nogroup
4、按檔案許可權:-perm
改選項後面接引數:[+|-|/] mode,mode表示許可權,可以用數字表示,如644,用二進位制可以表示為110 100 100;也可以寫成u=rw,g=r,o=r。對於mode,-mode,+mode,/mode,區別如下:引數
說明示例
mode
嚴格匹配二進位制的每一位
find -perm 600 #許可權為600
-mode
匹配所有為1的位
find -perm -600 #所有者許可權為rw
+mode
至少匹配任意乙個為1的位
find -perm +600 #所有者有讀或寫許可權
/mode
至少匹配任意乙個為1的位
find -perm /600 #所有者有讀或寫許可權
還可以將檔案特殊許可權suid,sgid,sbit也考慮進去,suid : 4 ,sgid:2,sbit:1,如
find -perm 4700
#查詢rws------的檔案
find -perm u=rws #同4700
find -perm -0700
#查詢所有者許可權為rwx的檔案
find -perm -u=rws #同-4700
find -perm /0700
#查詢所有者有r或w或x的檔案
find -perm /u=rws #同+4700
5、按檔案時間選項
引數說明
-atime
[+|-]n
access time,最近一次訪問時間
-ctime
[+|-]n
change time,最近一次屬性修改時間
-mtime
[+|-]n
modify time,最近一次內容修改時間
-amin
[+|-]n
access min,最近一次訪問時間
-cmin
[+|-]n
change min,最近一次屬性修改時間
-mmin
[+|-]n
modify min,最近一次內容修改時間
引數說明
time
n發生在距離當前時間n*24小時至(n+1)*24 小時,[n*24,(n+1)*24)
-n發生在n天以前,距離當前時間為(n+1)*24小時或者更早,[(n+1)*24,∞)
+n發生在n天以內,距離當前時間為n*24小時以內,[0,n*24)
minn
發生在距離當前時間n分鐘至(n+1)分鐘,[n,n+1)
-n發生在n分鐘以前,距離當前時間為(n+1)分鐘或者更早,[n+1,∞)
+n發生在n天以內,距離當前時間為n分鐘以內,[0,n)
5、按檔案大小:-size
-size後接引數:[+|-]n[bcwkmg],+表示大於,-表示小於,bcwkmg為單位,含義見下:
find -size -2m -size +2k #查詢的檔案2k到2m的檔案
find -size
80c #查詢大小為80個位元組的檔案
組合查詢
-a與"*.zip" -a -size +100m #也可以不寫-a-o或
-not,!非
find -name
"*.zip" -o -size +100m
find -name
"*.zip" ! -size +100m
find 結果後續處理
find -name "*test*" -type f -ls #ls列出詳細資訊
find -name "*test*" -type f -exec rm {} \; #-exec後接其他處理命令,{}表示find查詢的乙個結果,\;為固定寫法
find -name "*test*" -type f -ok rm {} \; #作用與-exec相同,區別在於-ok後面執行的命令需要使用者確認,而-exec不需使用者確認
結合管道命令 | ,xargs命令,可以實現更多的操作
find -name
"*.zip"
-ls| head
find /
-name
"mytest"
| xargs -i mv {} "mytest"
#xargs的-i選項表示用{}替代管道前的結果
find /
-name
"mytest"
| xargs -i {} mv {} "mytest"
#xargs的-i選項指明用{}替代管道前的結果
find的更多用法後面再做補充…… linux find 命令總結
這裡總結一些常用到的關於find的命令的操作 b find命令的一般形式為 b find pathname options print exec ok 讓我們來看看該命令的引數 pathname find命令所查詢的目錄路徑。例如用.來表示當前目錄,用 來表示系統根目錄。print find命令將匹...
Linux Find 命令總結
三豐雲,免費虛擬主機和免費雲伺服器相當不錯,使用起來非常快,對於個人使用者來說足夠用了,有需要的朋友來看看吧,我已經使用過了 體驗很不錯的 1 按檔名遞迴查詢 find name filename 2 按檔名遞迴查詢,不區分大小寫 find iname filename 3 查詢當前目錄及深度為1的...
linux find命令總結
find命令 find命令是乙個實時查詢工具,通過遍歷指定路徑而完成對檔案的查詢 在使用該命令時,如果不選定引數,則在當前目錄下查詢子目錄與檔案並顯示之 另外,任何位於引數之前的字串,都將視為欲查詢的目錄名。由於是實時遍歷查詢,find有如下特性 精確實時查詢,速度慢可能只搜尋使用者具備讀取和執行許...