Linux find常用命令

2022-09-19 02:15:12 字數 4941 閱讀 2921

今天研究一下find的一些常用的命令。

find格式:find filepath [-option] [-print|-exec|-ok...]

其中常用的option主要有

-type d|f|s|b|c|p

-perm

-user

-group

-mtime

-depth

-newer

-name

-regex

下面我們通過例子來研究,事先準備了這樣的乙個目錄結構

[root@test tmp]# find ./././root2

./root2/sub1

./root2/sub1/sub2

./root

./root/sub1

./root/sub1/sub2

./root/sub1/sub2/sub3

./test.txt

他們的仔細資訊如下:

[root@test tmp]# ll -r

.:total

8drwxr-xr-x 3 root root 4096 jul 5

16:13

root

drwxr-xr-x 3 www root 4096 jul 5

16:13

root2

-rw-r--r-- 1 root root 0 jul 5

16:31

test.txt

./root:

total

4drwxrwxrwx

3 root root 4096 jul 5

16:13

sub1

./root/sub1:

total

4drwxr-xr-x 3 root root 4096 jul 5

16:13

sub2

./root/sub1/sub2:

total

4drwxr-xr-x 2 root root 4096 jul 5

16:13

sub3

./root/sub1/sub2/sub3:

total

0./root2:

total

4drwxr-xr-x 3 root root 4096 jul 5

16:13

sub1

./root2/sub1:

total

4drwxr-xr-x 2 root root 4096 jul 5

16:13

sub2

./root2/sub1/sub2:

total

0

-type: type後面可以接上面說的六種引數,表示查詢的型別,其中f d是最常用的,分別表示查詢檔案和目錄。

[root@test tmp]# find ./ -type d

././root2

./root2/sub1

./root2/sub1/sub2

./root

./root/sub1

./root/sub1/sub2

./root/sub1/sub2/sub3

[root@test tmp]# find ./ -type f

./test.txt

-perm 許可權: perm用於查詢某個許可權的檔案。

[root@test tmp]# find ./ -perm 777

./root/sub1

[root@test tmp]# find ./ -perm 755

././root2

./root2/sub1

./root2/sub1/sub2

./root

./root/sub1/sub2

./root/sub1/sub2/sub3

-user 使用者名稱: 用於查詢特定所有者的檔案。

[root@test tmp]# find ./ -user www

./root2

[root@test tmp]#

find ./ -user root

./root2/sub1

./root2/sub1/sub2

./root

./root/sub1

./root/sub1/sub2

./root/sub1/sub2/sub3

./test.txt

-group 使用者名稱: 用於查詢特定使用者組的檔案。用法與-user一樣。

-mtime -n|+n:-n表示查詢n天之內修改過的檔案,+n表示查詢n天之前修改過的檔案。時間軸都以現在的時候為起點。

[root@test tmp]# find ./ -mtime -1

../root2

./root2/sub1

./root2/sub1/sub2

./root

./root/sub1

./root/sub1/sub2

./root/sub1/sub2/sub3

./test.txt

[root@test tmp]#

find ./ -mtime +1

[root@test tmp]#

-newer filepath: 查詢比filepath更新的檔案

[root@test tmp]# find ./ -newer root2/sub1

././test.txt

-depth: 先查詢處理目錄裡的內容,然後再處理目錄。

上面的解釋可能不太明了,我們來比較下面兩個例子:

[root@test tmp]# find root/root/root/sub1

root/sub1/sub2

root/sub1/sub2/sub3

[root@test tmp]#

find root/ -depth

root/sub1/sub2/sub3

root/sub1/sub2

root/sub1

root/

現在是否明白了,不加-depth時,find先處理當前目錄,然後接著處理目錄下面的檔案/目錄。反之,先處理目錄下面的內容,再反過來處理目錄。

我們再來看上面的例子,加-depth以後,先讀取root裡的sub1,因為它是目錄,於是又先處理了sub1裡的sub2,一步一步往下推。等到了sub3以後,因為裡面已經沒有東西了,所以處理sub3,然後回朔處理sub2,一步一步向上。

-name 檔名: 根據檔名查詢。可以使用?代替乙個字元,*代替一字串,選擇乙個列表裡的字元。

[root@test tmp]# find ./ -name "

root?

"./root2

[root@test tmp]#

find ./ -name "

root*

"./root2

./root

[root@test tmp]#

find ./ -name "

[rs]*

"./root2

./root2/sub1

./root2/sub1/sub2

./root

./root/sub1

./root/sub1/sub2

./root/sub1/sub2/sub3

[root@test tmp]#

find ./ -name "

[rst]*

"./root2

./root2/sub1

./root2/sub1/sub2

./root

./root/sub1

./root/sub1/sub2

./root/sub1/sub2/sub3

./test.txt

-regex partern: 這就是牛叉的工具,可以使用正則來匹配檔名。需要注意的是,它要求匹配的是完全的路徑。

[root@test tmp]# find ./ -regex '

root

'[root@test tmp]#

find ./ -regex '

./root

'./root

[root@test tmp]#

find /tmp/ -regex '

/tmp/root

'/tmp/root

[root@test tmp]#

find ./ -regex '

./root.*

'./root2

./root2/sub1

./root2/sub1/sub2

./root

./root/sub1

./root/sub1/sub2

./root/sub1/sub2/sub3

regex使用的正則規則是受-regextype影響的。具體man find看一下吧。

!: 否定字首。怎麼用呢?直接看例子吧

[root@test tmp]# find ./ ! -name sub*././root2

./root

./test.txt

[root@test tmp]#

find ./ ! -name sub* ! -type d

./test.txt

Linux find常用命令

linux之find命令詳解 查詢檔案 find type f 查詢目錄 find type d 查詢名字為test的檔案或目錄 find name test 查詢名字符合正規表示式的檔案,注意前面的 查詢到的檔案帶有目錄 find regex so.gz 查詢目錄並列出目錄下的檔案 為找到的每乙個...

Linux find 常用命令語法

1.按照檔名查詢檔案 name選項 find 待查詢目錄 name 匹配方式 print 可有可無,預設已經帶有print引數 2.按照檔案許可權查詢 perm選項 find 待查詢目錄 perm 755 許可權8進製 3.所屬使用者 user,所屬組 group 4.檔案的mtime 修改時間 a...

docker常用命令 Docker 常用命令筆錄

格式docker run 選項 映象 命令 引數.示例docker run it rm ubuntu 16.04 bash 示例解釋 it 這是兩個引數,乙個是 i,表示互動式操作,乙個是 t表示終端 rm 這個引數是說容器退出後隨之將其刪除 ubuntu 16.04 這是指用ubuntu 16.0...