find的合理使用

用途:

当我们在查找指定的文件时,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会加速我们的工作效率。

猜你喜欢

转载自blog.csdn.net/root__oo7/article/details/81252902