首页 > 资讯 > 数码知识内容详情

find命令 - 根据路径和条件搜索指定文件 2024-01-09 09:42:14 网络

find命令的功能是用于根据给定的路径和条件查找相关文件或目录,参数灵活方便,且支持正则表达式,结合管道符后能

find命令的功能是用于根据给定的路径和条件查找相关文件或目录,参数灵活方便,且支持正则表达式,结合管道符后能够实现更加复杂的功能,是Linux系统运维人员日常工作必须掌握的命令之一。

find命令通常进行的是从根目录(/)开始的全盘搜索,有别于whereis、which、locate……等的有条件或部分文件的搜索。对于服务器负载较高的情况,建议不要在高峰时期使用find命令的模糊搜索,会相对消耗较多的系统资源。

语法格式:find [路径] [条件] 文件名

常用参数

-name 匹配文件名
-perm 匹配文件权限
-user 匹配文件所属主
-group 匹配文件所属组
-mtime 匹配最后修改文件内容时间
-atime 匹配最后读取文件内容时间
-ctime 匹配最后修改文件属性时间
-nouser 匹配无所属主的文件
-nogroup 匹配无所属组的文件
-newer 匹配比指定文件更新的文件
-type 匹配文件类型
-size 匹配文件大小
-prune 不搜索指定目录
-exec …… {}\; 进一步处理搜索结果

参考示例

全盘搜索系统中所有以.conf结尾的文件:

[root@linuxcool ~]# find / -name *.conf
/run/tmpfiles.d/kmod.conf
/etc/resolv.conf
/etc/dnf/dnf.conf
/etc/dnf/plugins/copr.conf
/etc/dnf/plugins/debuginfo-install.conf
/etc/dnf/plugins/product-id.conf
/etc/dnf/plugins/subscription-manager.conf
………………省略部分输出信息………………

在/etc目录中搜索所有大于1M大小的文件:

[root@linuxcool ~]# find /etc -size +1M
/etc/selinux/targeted/policy/policy.31
/etc/udev/hwdb.bin

在/home目录中搜索所有属于指定用户的文件:

[root@linuxcool ~]# find /home -user linuxprobe
/home/linuxprobe
/home/linuxprobe/.mozilla
/home/linuxprobe/.mozilla/extensions
/home/linuxprobe/.mozilla/plugins
/home/linuxprobe/.bash_logout
/home/linuxprobe/.bash_profile
/home/linuxprobe/.bashrc

列出当前工作目录中的所有文件、目录以及子文件信息:

[root@linuxcool ~]# find .
.
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
./anaconda-ks.cfg
………………省略部分输出信息………………

在/var/log目录下搜索所有指定后缀的文件,后缀不需要大小写。

[root@linuxcool ~]# find /var/log -iname "*.log"
/var/log/audit/audit.log
/var/log/rhsm/rhsmcertd.log
/var/log/rhsm/rhsm.log
/var/log/sssd/sssd.log
/var/log/sssd/sssd_implicit_files.log
/var/log/sssd/sssd_nss.log
/var/log/sssd/sssd_kcm.log
/var/log/tuned/tuned.log
/var/log/anaconda/anaconda.log
/var/log/anaconda/X.log
………………省略部分输出信息………………

在/var/log目录下搜索所有不是以.log结尾的文件:

[root@linuxcool ~]# find /var/log ! -name "*.log"
/var/log
/var/log/lastlog
/var/log/README
/var/log/private
/var/log/wtmp
/var/log/btmp
/var/log/samba

搜索当前工作目录中的所有近7天被修改过的文件:

[root@linuxcool ~]# find . -mtime +7
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
………………省略部分输出信息………………

全盘搜索系统中所有类型为目录,且权限为1777的目录文件:

[root@linuxcool ~]# find / -type d -perm 1777
/dev/mqueue
/dev/shm
/var/tmp
/tmp
………………省略部分输出信息………………

全盘搜索系统中所有类型为普通文件,且可以执行的文件信息:

[root@linuxcool ~]# find / -type f -perm /a=x 
/boot/vmlinuz-4.18.0-80.el8.x86_64
/boot/vmlinuz-0-rescue-c8b04558503242459d908c6c22a2d481
/etc/X11/xinit/xinitrc.d/50-systemd-user.sh
/etc/X11/xinit/xinitrc.d/00-start-message-bus.sh
/etc/X11/xinit/xinitrc.d/localuser.sh
/etc/X11/xinit/Xclients
/etc/X11/xinit/Xsession
/etc/X11/xinit/xinitrc
………………省略部分输出信息………………

全盘搜索系统中所有后缀为.mp4的文件,并删除所有查找到的文件:

[root@linuxcool ~]# find / -name "*.mp4" -exec rm -rf {} \;

与该功能相关的Linux命令:

  • rwho命令 – 查看系统用户
  • ssh-add命令 – agent的高速缓存
  • modinfo命令 – 显示kernel模块的信息
  • logwatch命令 – 遍历系统日志
  • whoami命令 – 显示当前用户名
  • sysctl命令 – 配置系统内核参数
  • time命令 – 指令执行时所消耗的时间
  • ssh-agent命令 – ssh密钥管理器
  • lilo命令 – 安装核心载入
  • ssh-copy-id命令 – 复制SSH公钥到远程主机

相关标签: 数码科技