find - 根据规则查找文件

简介

  • 用法:find [目录]... [[选项] [表达式]]...
  • 支持多个目录和多个选项

查找条件

根据类型查找

  • -type
    • f: 文件
    • d: 目录
    • l: link
[root@master test]# find /root/test/ -type f
/root/test/c
/root/test/b
/root/test/a

根据文件名查找

  • -name:根据文件名查找,后边接通配
  • -iname:忽略文件名大小写,其他同上
  • -regex:根据目录+文件名进行查找,后边接正则表达式
# 根据文件名查找
[root@master test]# find /root/ -name "a"
/root/test/a

# 根据文件名(忽略大小写)查找
[root@master test]# find /root/ -name "A"
[root@master test]# find /root/ -iname "A"
/root/test/a

# 根据路径+文件名,使用正则查找
[root@master ~]# find /root/ -regex '.*/test/[abc]'
/root/test/c
/root/test/b
/root/test/a

根据文件大小查找

  • -size:
    • +/-:大于或小于
    • G、M、k:单位
# 查找当前目录下大于200M的文件
[root@master ~]# find ./ -size +200M
./kubernetes-server-linux-amd64.tar.gz

# 查找当前目录下大于10M小于20M的文件
[root@master ~]# find ./ -size +10M -size -20M
./kernel-lt-devel-5.4.276-1.el7.elrepo.x86_64.rpm
./etcd-v3.3.24-linux-amd64.tar.gz

根据权限查找

  • -perm
    • 使用数字声明
    • 使用 a、u、g 声明
# 使用数字声明权限
[root@master ~]# find ./ -type f -perm 0755
./cfssl
./cfssljson

# 使用 a/u/g,r/w/x 声明权限
[root@master ~]# find ./ -type f -perm /a=x
./cfssl
./cfssljson

根据属主和属组查找

  • -user:指定属主
  • -group:指定属组
[root@master ~]# ll
drwxr-xr-x 2 yangkaiyue yangkaiyue      4096 6月  13 14:45 test

[root@master ~]# find ./ -user yangkaiyue
./test

[root@master ~]# find ./ -group yangkaiyue
./test

根据文件时间查找

  • -ctime:上次修改元数据时间(如文件名,属主,数组等)
  • -mtime:上次修改内容时间
  • -atime:上次文件访问时间
  • -cmin/mtime/atime:按分钟计,其他同上
    • +:某时间段以外,如 +1 代表一天以前
    • -:某时间段以内,如 -1 代表一天以内
# 查找当前目录下 mtime 在 1 天以内的文件
[root@master ~]# find ./ -mtime -1

# 查找当前目录下 mtime 在 30 分钟以内的文件
[root@master ~]# find ./ -mmin -30

操作

删除

  • -delete
[root@master ~]# find test/ -regex '.*[a|bc]' -delete

其他操作

  • 接 -exec 命令
# 也可以实现删除,新机器谨慎执行啊,你机器里可好多都是符合条件的
[root@master ~]# find ./ -mmin -30 -exec rm -rf {} \;

# 批量重命名
[root@master test]# find ./ -mtime -1 -type f -exec mv {} {}.bak \;
  • 接 xargs 命令
[root@master ~]# find ./ -mmin -30 -name "a*" | xargs rm -rf
posted @ 2024-06-13 10:25  难德糊涂  阅读(54)  评论(0)    收藏  举报