【linux】linux下find指令的用法總結
前言:
先闡述下find指令是幹嘛的,為什麼要來研究他呢?
find指令是Linux下一個很重要的操作,因為linux是一個“一切皆檔案”的作業系統,find(查詢檔案)指令就尤為重要了,在windows作業系統下,我們查詢一個檔案可以直接在計算機中搜索檔案,但是linux作業系統的檔案是不帶字尾的,同樣,Linux下的find功能相對與windows來說,強大了很多。
Linux下的查詢指令有多個,下面我們主要講下locate和find兩個指令
locate指令是對其生成的資料庫進行遍歷(生成資料庫的命令(updatedb)).這一特性決定了用locate查詢檔案的速度會很快,那麼locate速度既然能夠快速的查詢,那為什麼還需要find指令呢?因為locate指令只能對檔案進行模糊匹配,精確度不是很高。
#locate的簡單操作選項:
-i //查詢檔案的時候不區分大小寫 比如:locate -i tmp
-n //只顯示查詢結果的前N行 比如:locate -n 5 t
切入我們的正題:
find指令的用法總結:
根據檔名或正則表示式匹配搜尋
(1),通過檔名查詢
操作選項:-name
操作舉例:先看下我們的當前目錄使用pwd指令,然後在當前目錄下mkdir一個檔案tmp,然後使用find ./ -name tmp指令就可以找到tmp檔案了,使用find ./ -name 'tmp*'可以查詢所有包含tmp的檔案。
(2)通過正則表示式查詢
操作選項:!
操作舉例:!故名思意,就是否定一個查詢條件的,與邏輯-not非類似,
find ./ ! '*.c' -print查詢檔名不為.c的檔案,並打印出來
其他正則表示式還有如下一些:
-a 與條件
-o 或條件
-not 非條件(此引數的功能類似於否定引數‘!’)
2.根據檔案大小查詢
-size n:[c] 查詢檔案長度為n塊的檔案,帶有c時表示檔案長度以位元組計。
b——塊(512位元組); c——位元組; w——字(2位元組);
k——千位元組 ; M——兆位元組; G——吉位元組。
操作選項:-size -n
操作舉例:find ~ -size -100k查詢小於100k的檔案
操作選項:-size +n
操作舉例:find ~ -size +100k查詢小於100k的檔案
操作選項:-size n
操作舉例:find ~ -size 100k查詢為100k的檔案
我的系統下沒有等於100k的檔案。
3.根據檔案深度查詢
操作選項:maxdepth
操作舉例:find -maxdepth 2 -name tmp在深度為2的目錄中查詢檔案tmp
操作選項:mindepth
操作舉例:find -mindepth 1 -maxdepth 3 -name tmp在深度為1至3中查詢檔案tmp
4.按檔案許可權查詢
操作選項:
-perm 按照檔案許可權查詢
-user (或者是-uid n n是使用者賬號的ID) 按照檔案所有人查詢
-group (或者是-gid n n是組名的ID)按照檔案的所屬組查詢
操作舉例:find -type f -perm 777
find -type f -user 777
find -type f -group 777(這裡就不一一截圖了,看了上面那麼多想必大家都會了)
5.按檔案型別查詢
檔案型別 型別引數
普通檔案 f
符號檔案 l
目 錄 d
字元裝置 c
塊裝置 b
套接字 s
管道檔案 p
操作選項:-type
操作舉例:find . -type p、find . =type f等等
6.根據檔案時間查詢
Linux檔案系統中的三種時間戳:
▲訪問時間(-atime):使用者最近一次訪問檔案的時間;
▲修改時間(-mtime):檔案內容最後一次被修改的時間。
▲變化時間(-ctime):檔案元資料(metadata,例如許可權或所有權)最後一次改變的時間。
操作選項:-atime 、-mtime 、-ctime(用+、-來表示大於和小於)
操作舉例:find ./ -atime -1、find ./ -atime +1、find ./ -mtime -2、find ./ -ctime等等
特殊:find ./ -newer tmp ----> 查詢比test.c還要新的檔案
7.find與xargs結合使用
xargs引數 將標準輸入轉換成命令列引數
操作選項:-atime 、-mtime 、-ctime(用+、-來表示大於和小於)
操作舉例:find -type f -name "*.txt" -print0 |xargs -0 rm -f(將找到的檔案刪除,xargs -0將\0作為 輸入定界符);
find -type f -name "*.c" -print0 |xargs -0 -1(統計所有C程式檔案的行數)