文件查找

locate 和 find

在文件系統中查找符合條件的文件

locate :非實時查找(數據庫查找)

語法 :locate? +? 文件名? 直接查找

按照查詢系統上預建的文件索引數據庫

/var/lib/mlocate/mlocate.db? ? (每天開機以后自動生成,剛裝的系統就找不到)

[XJ3698}3GSPT{[95YDR_FI

特點: 查找速度快? ? ? ? 模糊查找? ? ? ?非實時查找? ? ? 搜索的是文件的全路徑,不僅僅是文件名

可能只搜索用戶具備讀取和執行權限的目錄

locate 的命令選項: -i? ? ? ? ?:不區分大小寫

-n? N? :? ?只列舉前N個

-r? ? ? ? :? ?可以使用正則表達式

查找文件 locate? ?f1.sh

J8CNY}[L1B@F{~0}(RLXOLI

locate? ?/data? ?-i? ?f1.sh

(@SMDV31TXN{8W{0WCX9(6P

locate? -n5? ?f1.sh? ? ?顯示出前面5行

F55`%)H~JZM05`{6`G0VA[B

locate -r “^/usr/.*\.lua$”? ? ??在/data 目錄下 尋找以/usr 開頭 以.lua結尾

AUM7M@RI1`RLTHZX$J%K7$6

 

find : 實時查找工具,通過遍歷指定路徑完成文件查找

工作特點: 查找速度略慢? ? ? ? 精確查找? ? ? 實時查找? ? ? ? ?可能只搜索用戶具備讀取和執行權限的目錄

語法 : find 【OPTION】……[查找路徑]【查找條件】【處理動作】

查找路徑:指定具體目標路徑;默認為當前目錄

查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認為找出指定路徑? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 下的所有路徑

處理動作:對符合條件的文件做操作,默認輸出至屏幕

查找條件

指搜索層級? ?-maxdepth? ? level 最大搜索目錄深度,指定目錄為第一級

-mindepth? ? ?level 最小搜索目錄深度

根據文件名或inode查找:

-name”文件名稱”:支持使用glob

*, ?, [], [^]

-iname“文件名稱”:不區分字母大小寫

-inum n 按inode號查找

-samefile name 相同inode號的文件

-links n 鏈接數為n的

-regex “PATTERN”:以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱

find /etc/ -maxdepth 2 -name passwd? ? 取/etc/ 下 含有passwd的最少第2層目錄

_39N0TYKD{~%OZQ$8MQSFFS

find /etc/? -maxdepth 2 -mindepth? 2 -name passwd? 取/etc/ 最少2層 最多2層 含有passwd的目錄

F~A4SXCGX[$OTUWIO7X3~5V

ll -ia? 可以看到文件的節點編號

ARW]ZG6[KAPVA2ZD48F$VAN

find? /data? inum 68? ?取 /data 下文件? 68的節點編號

K5UG$(9F~0OR{$@]`Z{_FS7

find /data -samefile lg.out? -ls? ?取 /data 目錄下和lg.out相同的節點編號

0F6HVDZQZ][0WEQLDI5HO]W

find /etc/ -regex “.*\.conf$”? ?用正則表達式取/etc/下的 以.conf結尾的文件

H%A)PLEYMN{43SGNMONEODO

根據屬主,屬主查找:

user USERNAME : 查找屬主為制定用戶的(UID)的文件

-group GRPNAME: 查找屬組為指定組(GID)的文件

find? ?/home? -user? heihei? -ls? ?查找在/home 下 用戶為heihei 的文件屬性

EYY60KUKHMREAEE8@}PL5MH

-nouser:查找沒有屬主的文件

-nogroup:查找沒有屬組的文件

find? /home? -nouser? ?查找/home下沒有所屬主的文件

LW)F70674NVXL@QF]$9F}VF

find /home -nouser -a -nogroup -ls 查找/home下即沒有所屬主有沒有所屬組的文件

G]{`~%A[7]3OFGH{Z_S)07L

find /home -nouser -o -nogroup

9_LN0KFM)7BZIF_`YN2H$FX

根據文件類型查找

-type :? ? ? ? f? :普通文件? ? ?d:目錄文件? ? l :符號鏈接文件? s: 套接字文件? ? b: 塊設備文件

c: 字符設備文件? ? p : 管道文件

空文件或目錄

-empty

find /etc/ -empty -type f? ?查找/etc/ 普通空文件目錄

`FKA7`KV@~]1K0[T2ZUEHUK

-not? ,? ?!

find? /data ! -empty? -type f? ?查找/data目錄下非空的普通文件

(HDOYV[)ITY7_185OOGV@48

!A -a !B = !(A -o B)? ? ? ? ??!A -o !B = !(A -a B)

find /tmp \( -not -user root -a -not -name ‘f*’ \) -ls
find /tmp -not \( -user root -o -name ‘f*’ \) –ls

2LXD6[(][_J(7IHT}J_3~3I

根據文件的大小來查找

-size? [+|-] # UNIT? 常用單位 :k, M ,G , c (byte)

#UNIT: (#-1, #]
如:6k 表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k 表示[0,5k]
+#UNIT:(#,∞)
如:+6k 表示(6k,∞)

DZ`9J~8WZNRMP}HE3_K4E]5

如果SIZE 后面 跟數字 # 大小的話搜索出的數字是(數字#-1 ~ 到數字#)

如果size 后面跟數字 -#? 的大小的話搜索出的數字是【0 ~ -1】

如果size后面跟數字 +# 的大小的話搜索出的數字是(數字# ~ 無窮大)

根據事件戳 以天為單位

-atime [+|-]#,
#: [#,#+1)
+#: [#+1,∞]
-#: [0,#)
-mtime
-ctime
以“分鐘”為單位:
-amin
-mmin
-cmin

如果-atime 后面跟 # 【# ~ #+1)

如果-atime后面跟 -#【0 ~ # )

如果-atime后面跟+#【#+1 ~ 無窮大】

%)V]F7PIXOA_OYVH%WU2}NW

查看文件的時間用? ?stat? 文件名

根據權限查找

-perm? [-|/] MODE

MODE: 精確權限匹配

/MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系,+ 從centos7開始淘汰

-MODE:每一類對象都必須同時擁有指定權限

find /data -perm 644? -ls? ? ?查找在/data目錄下權限為644的文件

9QE8IZVVQ3M_M__D_RZ${MP

find /data -perm? /644? -ls? 查找在/data目錄下只要有權限符合644中的任意一個都可以顯示出來IMMH~2SUS[EHFS)DNZ}0~BQfind /data -perm -644? -ls? 查找在/data目錄下權限為644以上的文件60QOISYX_~TFJM4XFYXX7$Q

文件的處理動作

-ok COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令,對于每個文件執行命令之前,都會交互式要求用戶確認

-exec COMMAND {} \; 對查找到的每個文件執行由COMMAND指定的命令

{}: 用于引用查找到的文件名稱自身

ind傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令

find? /data? -name? “f*”? -exec mv {}? {}.bak2.org? \;? ?把/data 目錄下帶 f 的文件移動到 /data 目錄下并改名為以.bak2.org 結尾的文件

PB}[C5EF8UW`NH8V{$L5634

在 find 中帶有-ok? ?-exec? 必須以? ? \;? 作為結束命令

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96997

(0)
祝韻杰-桃子祝韻杰-桃子
上一篇 2018-04-24
下一篇 2018-04-25

相關推薦

  • Homework_week3

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 ? ? ? ?who | cut -d’ ‘ -f1 | uniq 2、取出最后登錄到當前系統的用戶的相關信息。 ? ? ? who | tail -1 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 ? ? ? cut …

    Linux筆記 2018-06-26
  • Tomcat的簡介和應用

    tomcat的配置文件;tomcat的虛擬主機;tomcat的圖形管理界面;tomcat的負載均衡;

    2018-07-16
  • vim

    vim

    Linux筆記 2018-05-08
  • linux基礎命令及文件管理

    linux基礎和幫助 echo 命令擴展行:$()或` ` # echo $USER # root # echo “i am `whoami`” # i am root 括號擴展:{ } # echo file{1,3,5} # file1 file3 file5 # rm -f file{1,3,5} # echo {1..10} …

    Linux筆記 2018-04-08
  • 初始nginx

    本文涉及到nignx的安裝、nginx的配置說明、nginx的負載均衡、nginx的反向代理和nginx的ssl方反向代理以及nginx location路徑匹配優先級等問題。

    Linux筆記 2018-07-08
欧美性久久久久