文件查找
目录
文件查找
find语法
find [路径] [选项] [表达式] [动作]
按文件类型查找-type
-type
f:可编辑的文件
d:目录
l:软链接文件
b:块设备文件
c:字符设备文件 终端
s:socket 安全套接字文件
p:管道文件
find [路径] [选项]
# 例:
[root@localhost ~]# find /run -type f
[root@localhost ~]# find /run -type s|xargs ls -l
srw-rw-rw-. 1 root root 0 Apr 14 16:29 /run/dbus/system_bus_socket
srwx------. 1 root root 0 Apr 14 16:29 /run/systemd/cgroups-agent
srw-rw-rw-. 1 root root 0 Apr 14 16:29 /run/systemd/journal/socket
[root@localhost ~]# find /etc -type d|wc -l
596
按文件大小查找-size
-size
-:小于
+:大于
精准但是又不精准的匹配
# 例:
查找etc目录下小于1M的文件
[root@localhost ~]# find /etc/ -size -1M
-i:指定数据流的位置,将数据流放入{}中
[root@localhost ~]# find /opt/ -size -1k |xargs -i mv {} /tmp
按文件名查找-name
-name:严格区分大小写
-iname:不区分大小写
!:取反,匹配该选项之外的所有选项
# 例:
查找/目录下名称是lza的文件
[root@localhost ~]# find / -name 'lza'
/var/spool/mail/lza
/home/lza
[root@localhost ~]# find / -name '*lza*'
按文件时间查找-mtime
# 查看三种时间
[root@localhost ~]# stat 文件名
-atime:按文件访问时间查找
-mtime:按文件内容创建,修改时间查找
-ctime:文件属性,修改时间查找
+n:查找第n天之前的所有文件(不包括今天)
-n:查找从今天开始,n天内的所有文件
# 例:
查找opt目录下近7天的文件,!取反
[root@localhost opt]# find /opt ! -mtime -7|xargs rm -f
按文件属主和属组查找-user
-user:按文件的属主查找
-nouser:查找没有属主用户的文件
-group:按文件的属组查找
-nogroup:查找没有属组的文件
# 例:
查找etv目录下属主是root的所有文件
[root@localhost ~]# find /etc/ -user root
[root@localhost ~]# find /etc/ -group lza
按权限查找-perm
-perm
# 权限精确查找
查找当前目录下权限是222的文件
[root@localhost ~]# find ./ -perm 222
[root@localhost ~]# find ./ -perm 644
# -权限
每个权限位上,都要包含数字权限的所有权限
查找当前目录下权限包含622权限的文件
[root@localhost ~]# find ./ -perm -622 -ls
622
rw--w--w-
# /权限
总共三个权限位,只要有一个权限位的权限被包含,就可以找到
[root@localhost ~]# find ./ -perm /644 -ls
属主权限位,有一个r或者有一个w就满足条件
属组权限位,有一个r就满足条件
其他用户权限位,有一个r就满足条件
按深度查找-maxdepth
-maxdepth
针对目录层级查找
# 查找/etc/目录下的所有1级和2级目录
[root@localhost ~]# find /etc -type d -maxdepth 2
多条件组合查找
-a:和,并且(默认)
-o:或者
!:取反
查找opt目录下是目录的文件,近七天修改
[root@localhost opt]# find /opt/ -type d -mtime -7
/opt/
/opt/dir-24
/opt/dir-25
/opt/dir-26
/opt/dir-27
/opt/dir-28
/opt/dir-29
/opt/dir-30
查找opt目录下名称是dir*且名称里有0*,是文件,近七天,大于1K的文件
[root@localhost opt]# find /opt/ -name 'dir*' -name '*0' -type f -mtime -7 -size +1K
find动作
-print:打印查找到的内容到终端上(find命令默认就是打印结果 -print)
-ls:查看文件的详细信息 |xargs ls -l 或 ls -l $(find xxx) 或 ls -l 'find xxx'
-delete:删除查找到的文件(bug跟ls,ls看不见的,也删除不掉)并且只能删除空目录
其它删除方法: |xargs rm -rf 或 rm -rf $(find xxx) 或 rm -rf `find xxx
-ok:找到文件后,执行后面的bash命令,询问是否操作
语法:-ok 系统命令 {} \;
-exec:找到文件后,执行后面的bash命令
语法:-exec 系统命令 {} \;
find / -type f -name 'file*' -exec mv {} /tmp \;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律