一、文件查找工具 locate,find
locate:
根據此前updatedb命令生成的數據庫來完成文件查找
查找速度快,
非實時查找,模糊查找,
locate FILENAME
-b 查找文件名中包含目標字符的文件(不包含目錄)
find:通過遍歷指定的目標目錄,實時查找符合指定屬性的文件:
精確匹配,速度略慢
find [OPTINS] [查找路徑] [查找條件] [處理動作]
查找路徑:默認爲當前路徑
查找條件:默認爲指定路徑下的所有文件
處理動作:默認爲打印至屏幕
查找條件:
-name "文件名" 支持文件名通配*,?,[],[^]
-iname "文件名" 文件名不區分大小寫
-regex "PATTERN" 以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名
-user USERNAME 根據文件屬主查找
-group USERNAME 根據文件屬組查找
-uid UID 根據指定UID查找
-gid GID 根據指定GID查找
-nouser 查找沒有屬主的文件
-nogroup 查找沒有屬組的文件
-type TYPE 根據文件類型查找
f 普通文件
d 目錄文件
l 符號鏈接文件
b 塊設備文件,c 字符設備文件 p 命令名管道文件 s 套接字文件
-size [+|-]#UNIT 常用單位K,M,G
#UNIT #-1 < x <= # 例:2k表示:1.01k到2k
-#UNIT x <= #-1 例:-2k表示:小於等於1k
+#UNIT x > # +2k 大於2K不包括2K
根據時間戳來查找:
以天爲單位:
-atime [+|-]# #: #=< x < #+1 大於3天但不到4天
-#: x < # 小於3天
+#: x >= #+1 大於等於4天
-mtime,-ctime
以分鐘爲單位:
-amin[+|-]#
-mmin,-cmin
根據權限查找:
-perm [+|-]MODE
MODE:與MODE精確匹配
/MODE或+MODE:任何一類用戶只要能包含對其指定的任何一位權限即可 例:+555 表示只要目錄文件只要屬主或數組或任何人中只要有W或X就匹配
-MODE:每一類用戶的權限都包含對其指定的所以權限
-222: 666權限的文件符合 664不符合
組合查找條件:
與:-a 查找條件1 -a 查找條件2 -a ....
或 -o
非 -not或-! find /tmp -not -user root -ls
find /tmp -nouser -o -user xj -ls
find /tmp \( -nouser -o -user xj \) -ls
處理動作:
-print:默認動作,打印至屏幕
-ls:顯示找到的文件的詳細屬性
-delete:刪除查找到的文件
-fls /FILENAME:查找到的文件的詳細路徑信息保存至指定文件中
-exec COMMAND {} \; #不會提示確定,直接操作
-ok COMMAND {} \; #會提示確定,直接操作
注意:find命令會一次性找到所有符合條件的文件,並一同傳遞給後面的命令,但有些命令不能接受過長的參數,解決辦法:find |xargs COMMAND
找到文件後把文件名改成之前文件後加上.notroot?
利用i節點刪除亂碼文件
find ./ -inum 12345 -exec rm {} -rf \;
1 2 3 4 5 6 | [xiejun@localhost ~]$ find /tmp ! -user root - ls 1308240 0 -rw-rw-r-- 1 xiejun xiejun 0 Aug 24 14:21 /tmp/1test [xiejun@localhost ~]$ find /tmp ! -user root - exec mv {} {}.notroot \; [xiejun@localhost ~]$ find /tmp ! -user root - ls 1308240 0 -rw-rw-r-- 1 xiejun xiejun 0 Aug 24 14:21 /tmp/1test .notroot [xiejun@localhost ~]$ |