find的合理使用

root_oo7發表於2018-07-28

用途:

當我們在查詢指定的檔案時,ls和locate等並不能合理的滿足我們的要求,此時可以

使用find的命令來查詢

特點:

      實時查詢工具,通過遍歷指定路徑完成檔案查詢 

      精確查詢

      查詢速度略慢 

      預設遞迴查詢

      只搜尋使用者具備讀取和執行許可權的目錄

基本用法:

find  路徑    -mindepth #                   指明查詢檔案的最小深度

                     -maxdepth #                 指明查詢檔案的最小深度

                     -name 檔名               以檔名查詢

                     -iname 檔名              檔名不區分大小寫查詢

                     -user 使用者名稱                 查詢owner是指定使用者的檔案

                     -group  組名                  查詢指定組的檔案

                     -nouser  使用者名稱            查詢不是指定使用者名稱的檔案

                     -nogroup 組名               查詢不是指定使用者名稱的檔案

按檔案型別查詢:

find  路徑  -type  f                               查詢普通檔案

                            d                              查詢目錄檔案

                            s                              查詢套接字檔案

                            b                              查詢塊裝置檔案

                            c                              查詢字元文

                            p                              查詢管道檔案

                            l                               查詢符號連結檔案

按檔案大小查詢:

find 路徑   -size  +#k                        查詢大於#k的檔案

                              -#k                        查詢小於#k的檔案

                               #k                        查詢 大於#-1 小於等於#k的檔案

按時間查詢:

find 路徑 -atime +#                          查詢#天以後的檔案

                             -#                          查詢#天以前的檔案

                              #                          查詢 大於#-1 小於等於#天的檔案

 處理動作:

find 路徑  查詢條件  --ls                  將查詢的結果長顯示

                                    --delete          將查詢的結果刪除

                                   -exec command {} \ ;將查詢的結果當做引數傳遞下去

 

例項說明: 

      基礎用法:

[root@localhost app]# tree
.
└── dir1
    ├── b
    ├── c
    └── dir2
        ├── d
        ├── dir3
        │   ├── f
        │   └── g
        └── e

3 directories, 6 files
[root@localhost app]# find -maxdepth 2
.
./dir1
./dir1/dir2
./dir1/b
./dir1/c
[root@localhost app]# ls -l dir1/dir2/d
-rw-r--r--. 1 guanyu root 0 Jul 28 08:11 dir1/dir2/d
[root@localhost app]# find -user guanyu
./dir1/dir2/d

 

[root@localhost app]# find -type d
.
./dir1
./dir1/dir2
./dir1/dir2/dir3

 

[root@localhost app]# find -size +30k
./b
[root@localhost app]# ls -lh b
-rw-r--r--. 1 root root 40K Jul 28 11:29 b

 

[root@localhost app]# find -name c -ls
25168099    0 -rw-r--r--   1 root     root            0 Jul 28 08:11 ./dir1/c


[root@localhost app]# find -name c -exec rm {} \; 
[root@localhost app]# tree 
.
└── dir1
    ├── b
    └── dir2
        ├── d
        ├── dir3
        │   ├── f
        │   └── g
        └── e

引申用法:

[root@localhost app]# find -name f -a -group root -ls
8405953    0 -rw-r--r--   1 root     root            0 Jul 28 08:11 ./dir1/dir2/dir3/f
[root@localhost app]# find -user guanyu -o -user zhangfei 
./dir1/dir2/d
./dir1/dir2/e
[root@localhost dir2]# find -not -user root
./d
./e
[root@localhost app]# find /app -path '/app/dir1/dir2' -a -prune -o -user root
/app
/app/dir1
/app/dir1/dir2
/app/dir1/b
[root@localhost app]# tree 
.
└── dir1
    ├── b
    └── dir2
        ├── d
        ├── dir3
        │   ├── f
        │   └── g
        └── e
說明:去除指定目錄後,在按指定的內容查詢

補充說明:合理使用find會加速我們的工作效率。

 

 

 

 

 

 

 

相關文章