Linux find命令:搜索文件
find 命令在 Linux 中用于基于各种条件(如文件名、类型、大小、权限、修改日期等)搜索文件和目录。它是强大的文件搜索工具,可以递归地遍历目录树来查找匹配指定搜索条件的文件。
find命令的语法格式如下:
find 命令根据选项不同实现的功能也不同,常用的选项如下:
下面的示例是对以上选项的详细演示,注意查看显示结果。
find命令的语法格式如下:
find 路径名 选项 查询结果处理动作
find 命令根据选项不同实现的功能也不同,常用的选项如下:
- -name:通过文件名进行搜索。
- -type:通过文件类型进行搜索。其中:b 表示块设备文件;c 表示字符设备文件;d 表示目录;f 表示普通文件;l 表示符号链接文件;p 表示管道文件;s 表示套接字文件。
- -size:通过文件大小进行搜索。其中:b 表示字节;k 表示 KB;M 表示 MB;G 表示 GB。
- -user:通过文件所属者进行搜索。
- -group:通过文件所属组进行搜索。
- -perm:按照文件权限进行搜索。符号“-”表示每个对象必须同时匹配指定的权限,可以多但是不能少;符号“+”(CentOS 6 以下版本,CentOS 7 以上的版本中是“/”符号)表示每个对象只要匹配指定权限中的一个即可;不使用符号表示每个对象必须完全匹配指定的权限。
- -ctime:通过最近修改时间(这里指的是修改文件权限的时间)进行搜索,“+n”表示修改时间与当前时间差大于 n×24 小时,“-n”表示修改时间与当前时间差小于 n×24 小时,n 表示修改时间与当前时间差大于(n-1)×24 小时且小于等于 n×24 小时。
- -mtime:通过最近修改时间(这里指的是修改文件内容和权限的时间)进行搜索,后面的数字 n 和选项 -ctime 的用法一致。
- -atime:通过最近访问时间进行搜索,后面的数字 n 也和 ctime 中的用法一致。
下面的示例是对以上选项的详细演示,注意查看显示结果。
#查找/opt目录下所有的txt文件。可以先在/opt目录下批量新建txt文件,包括二级子目录 [root@localhost opt]# find /opt -name "*.txt" -type f /opt/test4/1.txt /opt/test4/123.txt /opt/66.txt /opt/a.txt /opt/b.txt /opt/c.txt /opt/d.txt /opt/e.txt /opt/f.txt #查找/etc目录下大于80KB且小于100KB的文件,选项“-a”或“-and”表示逻辑与(同时满 足多个条件),选项“-o”或“-or”表示逻辑或(只需要满足一个条件) [root@localhost ~]# find /etc -size +80k -and -size -100k -type f /etc/ld.so.cache /etc/lvm/lvm.conf /etc/vmware-tools/vgauth/schemas/XMLSchema.xsd [root@localhost ~]# ls -lh /etc/ld.so.cache -rw-r--r--. 1 root root 84K 12月 2 22:34 /etc/ld.so.cache #查找/home目录下3天前修改的所有的txt文件,并将它们全部复制到/opt/a目录下 #方法一:“| xargs”表示将前面的结果交给后面的命令进行处理,“-i”表示逐行处理,“{}” 表示前面查找的结果的集合 [root@localhost /]# find /home -name "*.txt" -type f -mtime +3 | xargs -i cp {} /opt/a #方法二:“-exec”也是将前面的结果交由后面的命令进行处理,“{}”表示前面查找的结果 的集合,“\;”是“-exec”结尾的格式,不能缺少 [root@localhost ~]# find /home -name "*.txt" -type f -mtime +3 -exec cp {} /opt/a \;