1. 程式人生 > >【linux】linux下find指令的用法總結

【linux】linux下find指令的用法總結

前言:

  先闡述下find指令是幹嘛的,為什麼要來研究他呢?

find指令是Linux下一個很重要的操作,因為linux是一個“一切皆檔案”的作業系統,find(查詢檔案)指令就尤為重要了,在windows作業系統下,我們查詢一個檔案可以直接在計算機中搜索檔案,但是linux作業系統的檔案是不帶字尾的,同樣,Linux下的find功能相對與windows來說,強大了很多。

  Linux下的查詢指令有多個,下面我們主要講下locatefind兩個指令

locate指令是對其生成的資料庫進行遍歷(生成資料庫的命令(updatedb)).這一特性決定了用locate查詢檔案的速度會很快,那麼locate速度既然能夠快速的查詢,那為什麼還需要find指令呢?因為locate指令只能對檔案進行模糊匹配,精確度不是很高。

  #locate的簡單操作選項:

-i    //查詢檔案的時候不區分大小寫  比如:locate  -i   tmp

-n   //只顯示查詢結果的前N行         比如:locate -n  5  t

切入我們的正題:

  find指令的用法總結:

  1. 根據檔名或正則表示式匹配搜尋

  (1),通過檔名查詢

操作選項:-name

操作舉例:先看下我們的當前目錄使用pwd指令,然後在當前目錄下mkdir一個檔案tmp,然後使用find ./ -name tmp指令就可以找到tmp檔案了,使用find ./ -name 'tmp*'可以查詢所有包含tmp的檔案。

wKiom1c-fRfwLewaAABn2wptlQE123.png

wKiom1c-fpvTt6FGAAA3XAOelpU141.png

  (2)通過正則表示式查詢

操作選項:!

操作舉例:!故名思意,就是否定一個查詢條件的,與邏輯-not非類似,

  find ./ ! '*.c' -print查詢檔名不為.c的檔案,並打印出來

wKiom1c-hZ7TILrgAADYHxhl4TA177.png

其他正則表示式還有如下一些:

    -a  與條件

    -o  或條件

    -not 非條件(此引數的功能類似於否定引數‘!’)

  2.根據檔案大小查詢

-size n:[c] 查詢檔案長度為n塊的檔案,帶有c時表示檔案長度以位元組計。

b——塊(512位元組); c——位元組; w——字(2位元組);

k——千位元組 ; M——兆位元組; G——吉位元組。

操作選項:-size -n

操作舉例:find ~ -size -100k查詢小於100k的檔案

wKioL1c-iQnxOfThAAD1FxmB8wM193.png

操作選項:-size +n

操作舉例:find ~ -size +100k查詢小於100k的檔案

wKiom1c-iMGwZSySAAA03IfZmbM838.png

操作選項:-size  n

操作舉例:find ~ -size  100k查詢為100k的檔案

我的系統下沒有等於100k的檔案。

  3.根據檔案深度查詢

操作選項:maxdepth

操作舉例:find -maxdepth 2 -name tmp在深度為2的目錄中查詢檔案tmp

wKiom1c-i1GDL9zhAAA7sP8mmRQ142.png

操作選項:mindepth

操作舉例:find -mindepth 1 -maxdepth 3 -name tmp在深度為1至3中查詢檔案tmp

wKiom1c-jH_Dfa-LAACpBsxuHpI928.png

  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 pfind . =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程式檔案的行數)