find命令在Unix和类Unix系统中,常用于在文件系统指定多种条件进行搜索文件目录的命令行工具

       它可以根据文件名、类型、大小、修改时间、权限等多种条件进行搜索,并对搜索结果执行各种操作,如 删除、移动、重命名、等。

一、基础应用

find [路径] [搜索条件]

[路径]:指搜索的起始路径

[搜索条件]:指用于过滤搜索的选项、

    常见选项:

    -name                 #根据文件名搜索文件或目录、

例:
find  /var/  -name  "*.log"   
#在/var/这个目录下寻找名字以.log为结尾的文件或目录

    -type                    #根据文件类型搜索文件或目录

例:
find /etc/  -type  f   #在/etc/目录下寻找、类型为文本文件
find /var/  -type  d   #在/var/目录下寻找、类型为目录
find /etc/  -type  l   #在/etc/目录下寻找、类型为链接文件(快捷方式)
find /dev/  -type  b   #在/dev/目录下寻找、类型为块设备的文件
find /      -type  p   #在根目录下寻找   、类型为管道的文件
find /      -type  s   #在根目录下寻找   、类型为socket(套接字)的文件

    -size                     #根据文件大小搜索 K(KB) M(MB) G(GB

find /etc/  -size +10M   #在/etc/目录下寻找、大于10M的文件
find /etc/  -size -10M   #在/etc/目录下寻找、小于10M的文件

     -mtime                #根据文件修改时间搜索 

find /etc/  -mtime +90   #在/etc/目录下寻找、超过90天未修改的文件
find /etc/  -mtime -7    #在/etc/目录下寻找、7天内有过修改的文件

    -user                   #根据文件所属用户查询

    -group                 #根据文件所属组查询

find /tmp/ -user lucy    #在/tmp/目录下查找属于lucy用户的所有文件
find /tmp/ -group jack   #在/tmp/目录下查找属于jack这个组的所有文件

二、高级应用、

find [路径] [搜索条件] --exec  `执行的命令`  \;

      需要注意的是,使用 --exec 选项时,需要在命令的末尾添加 \; 以表示命令的结束。此外,{} 是一个占位符,表示找到的文件的路径。在执行命令时,find 会将 {} 替换为找到的文件路径。


1.查找并删除所有 

例:
find /ace/ -name "*.txt" -exec rm -f {} \;
#在/ace/目录及其子目录中查找所有以 .txt 结尾的文件,并将它们删除。

2. 查找并压缩所有 .log 文件:

例:
find /var/log/nginx/ -name "*.log" -exec tar -zcf logs.tar.gz {} \;
#在/var/log/nginx/目录及其子目录中查找所有以 .log 结尾的文件,并将它们压缩为 .tar.gz 格式包。

3.查找并将所有 .jpg 文件移动到名为 backup 的目录:

例:
find /images/ -name "*.jpg" -exec mv {} backup \;
#在/目录及其子目录中查找所有以 .jpg 结尾的文件,并将它们移动到名为 backup 的目录。

4.查找并将所有 .pdf 文件的所有者更改为 john

例:
find . -name "*.pdf" -exec chown john {} \;
#会在当前目录及其子目录中查找所有以 .pdf 结尾的文件,并将它们的所有者更改为 john。

5.查找并将所有 .mp3 文件的权限更改为 644:

例:
find /musics -name "*.mp3" -exec chmod 644 {} \;
#在/musics目录及其子目录中查找所有以 .mp3 结尾的文件,并将它们的权限更改为 644。

三、实战技巧

除了基本的查找功能外,find命令还可以结合其他命令和技巧,实现更强大的功能。以下是一些实战技巧:

1.查找并删除特定文件

例:
find /var/ -name "*.tmp" -exec rm -f {} \;
#删除指定目录下所有以.tmp结尾的文件。

2.查找空文件或空目录

例:
find /var/ -type f -empty
#查找指定目录下的所有空文件

3.查找并修改文件权限

例:
find /path/to/dir -type f -exec chmod 644 {} \;
#将指定目录下的所有文件的权限设置为644

4.查找并压缩文件

例:
find /path/to/dir -name "*.log" -exec gzip {} \;
#将指定目录下所有以.log结尾的文件进行gzip压缩。

5.排除某些目录进行查找

例:
find /opt/dir -path /opt/dir/exclude_dir -prune -o -type f -print
#/opt/dir目录下先排除exclude_dir子目录在搜索类型为文件的数据。 -path 为指定路径 -prune为排除 -o为或

find命令是Linux系统中一个非常强大的工具,它可以根据各种条件在文件系统中查找文件或目录。通过掌握其基本功能、常用选项以及实战技巧,你可以更加高效地管理和操作Linux系统中的文件。