Linux文件查找工具之find “大宝剑”--转载
原文地址:http://xinzong.blog.51cto.com/10018904/1749465
一、文件查找工具常用軟件
locate:
????locate命令其實是find -name的另一種寫法,但是要比后者快得多,原因在于它不搜索具體目錄,而是搜索一個數(shù)據(jù)庫/var/lib/locatedb,這個數(shù)據(jù)庫中含有本地所有文件信息。Linux系統(tǒng)自動創(chuàng)建這個數(shù)據(jù)庫,并且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數(shù)據(jù)庫。? ?
find:
????find命令用來在指定目錄下查找文件,通過遍歷指定的目標目錄,實時查找符合指定屬性的文件。可以結(jié)合正則表達式(REGular EXPressio)來匹配模式。
二、軟件常用參數(shù)及使用方式
?
locate:
????使用格式:locate [OPTION]... PATTERN...
????????常用參數(shù):
????????????-i:忽略大小寫
?
????????實例:
????????????過濾/etc/下以sh開頭的文件
| 1 2 3 4 | #?locate?/etc/sh /etc/shadow /etc/shadow- /etc/shells |
find:
? ? find [OPTIONS] [查找路徑] [查找條件] [處理動作]
? ? ? ? ? ? ? ? ? ? ? ? 查找路徑:默認為當前路徑;
查找條件:默認為指定路徑下的所有文件;
處理動作:默認為打印至屏幕;
1、查找路徑
????默認為當前路徑,可以指定系統(tǒng)內(nèi)的任意路徑,但不建議使用/
2、查找條件
(1)基本查找條件
a、用戶、用戶組及文件名查找
-name "文件名":文件名支持使用globbing
????glob:文件名通配;快速引用多個文件;文件名整體匹配度檢測;
元字符:基于元字符可編寫匹配模式(pattern);
????*:匹配任意長度的任意字符;
?????:匹配任意單個字符;
????[ ]:匹配指定集合內(nèi)的任意單個字符;
[a-z], [A-Z]:不區(qū)分字符大小寫;
[0-9]
[a-z0-9]
????[[:upper:]]:所有大寫字母;
????[[:lower:]]:所有小寫字母;
????[[:digit:]]:所有的數(shù)字;
????[[:alpha:]]:所有字母;
????[[:alnum:]]:所有字母和數(shù)字;
????[[:space:]]:空白字符;
????[[:punct:]]:標點符號;
????????????[^ ]:匹配指定集合外的任意單個字符;
?
實例:
| 1 | #?find?/etc?-name?"passwd*" |
-iname "文件名" 不區(qū)分大小寫
?
實例:
| 1 2 3 4 5 | #?find?/tmp?-iname?"*yum*" /tmp/yum.log /tmp/YUM.LOG #?find?/tmp?-name?"*yum*" /tmp/yum.log |
-user USERNAME:根據(jù)屬主查找
-group USERNAME:根據(jù)屬組查找
?
實例:
| 1 | #?find?/var?-user?root?-o?-group?mail |
-uid UID:根據(jù)指定UID查找
-gid GID:根據(jù)指定GID查找
?
實例:
| 1 2 3 | #?find?/tmp?-uid?3323?-ls 2346806????0?-rw-rw-r--???1?mageedu??mageedu?????????0?Mar?10?09:36?/tmp/mageedu 2346812????0?-rw-rw-r--???1?mageedu??mageedu?????????0?Mar?10?09:36?/tmp/testfile |
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件需
????-nouser與-nogroup參數(shù)主要用在當公司員工離職后,雖然賬戶刪除,但是他所有權(quán)限的文件還存在,并且以UID的形式來標識屬主與屬組,既當有uid有這個用戶相同時就會可以查看此文件,所以需要刪除此類文件。
?
實例:
| 1 2 3 | #?find?/tmp?-nouser?-nogroup?-ls 2346806????0?-rw-rw-r--???1?3323?????3323????????????0?Mar?10?09:36?/tmp/mageedu 2346812????0?-rw-rw-r--???1?3323?????3323????????????0?Mar?10?09:36?/tmp/testfile |
b、文件類型查找
?
????-type TYPE: 根據(jù)文件類型查找
f: 普通文件
d: 目錄文件
l: 符號鏈接文件
b: 塊設(shè)備
c: 字符設(shè)備文件
p: 命令名管道文件
s: 套接字文
實例:
| 1 | #?find?/tmp?-type?d?-ls |
c、文件大小
?
????-size [+|-]#UNIT:
常用單位有:k, M, G
#UNIT: #-1 < x <= #
????????????2k指1k-2k
-#UNIT:x <= #-1
????-2k:指0k-1k
????????+#UNIT: x > #
????+2k:指2k到正無窮
?
實例:
| 1 | #?find?/etc/?-type?f?-size?+1 |
d、時間戳查找
?
????以“天”為單位
???? -atime [+|-]#
-mtime [+|-]#
-ctime [+|-]#
?
? ? ????????#: 例如:今天為3月10日,3就是3月7日到3月8日(注意天是24小時制)
????????????-#: 例如:今天為3月10日,-3就是三天內(nèi)指,3月7日的現(xiàn)在時間到現(xiàn)在的時間。
????????????+#: 例如:今天為3月10日,+3就是三天前之前指,3月7日前
????以“分鐘”為單位
-amin [+|-]#
????????-mmin
-cmin
實例:
| 1 2 | #?find?/etc?-not?-user?root?-not?-user?hadoop?-mtime?-7 #?find?/?-nouser?-nogroup?-atime?-3 |
e、權(quán)限查找
?
????根據(jù)權(quán)限查找:
-perm [+|-]MODE
????MODE: 與MODE精確匹配
????+MODE:任何一類用戶的權(quán)限只要能包含對其指定的任何一位權(quán)限即可;
????-MODE:每一類用戶的權(quán)限都包含對其指定的所有權(quán)限;
#這里是指包含,例如:-444 指在屬主、屬組、其他用戶中只要包含讀權(quán)限就可以。
實例:
| 1 2 | #?find?/etc/init.d/?-perm?-113??#此處指所有用戶都有執(zhí)行權(quán)限,其他用戶有寫權(quán)限的文件或目錄 #?find?/etc/?-type?f?-not?-perm?+222?#此處指所有用戶都沒有寫權(quán)限 |
(2)組合查找條件
?
????組合查找條件:
與:-a, 查找條件1 -a 查找條件2 -a ...
????所有條件必須同時滿足
或:-o, 查找條件1 -o 查找條件2 -o ...
????滿足其中一個條件即可
非:-not, ! ??
????-not 查找條件
實例:
| 1 2 | #?find?/?\(?-nouser?-o?-nogroup?\)?-a?-atime?-3 #?find?/etc/?-not?\(?-user?root?-o?-user?hadoop?\)?-a?-mtime?-7 |
3、處理動作
????-print: 默認動作,打印至屏幕;
????????-ls: 顯示找到的文件的詳細屬性;
-exec COMMAND {} \;
-ok COMMAND {} \;
????????????#exec與ok的區(qū)別:ok會提供交互式,讓你確認。而exec則不需要;
實例:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | #?find?/tmp?-iname?"*yum*"?-type?f?-ls ???134????0?-rw-r--r--???1?root?????root????????????0?Mar?10?09:32?/tmp/yum.log ???137????0?-rw-r--r--???1?root?????root????????????0?Mar?10?09:32?/tmp/YUM.LOG #?find?/tmp?-iname?"*yum*"?-type?f?-exec?ls?-l?{}?\; -rw-r--r--?1?root?root?0?Mar?10?09:32?/tmp/yum.log -rw-r--r--?1?root?root?0?Mar?10?09:32?/tmp/YUM.LOG #?find?/tmp?-iname?"*yum*"?-type?f?-exec?echo?{}?>>/tmp/test.file?\; #?find?/tmp?-iname?"*yum*"?-type?f?-ok?echo?{}?>>/tmp/test.file?\; <?echo?...?/tmp/yum.log?>???y <?echo?...?/tmp/YUM.LOG?>???y |
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/5288597.html
總結(jié)
以上是生活随笔為你收集整理的Linux文件查找工具之find “大宝剑”--转载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 文件与进程
- 下一篇: spring websocket源码分析