首页 > 编程笔记 > Linux命令 阅读:24

Linux find命令:根据路径和条件搜索指定文件

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

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

find 命令的语法格式是:

find 路径 参数 文件名

常用参数见下表:

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

【实例 1】全盘搜索系统中所有以 .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
………………省略部分输出信息………………


【实例 2】在 /etc 目录中搜索所有大于 1MB 的文件:

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


【实例 3】在 /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


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

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


【实例 5】在 /var/log 目录下搜索所有指定后缀的文件:

[root@linuxcool ~]# find /var/log -name "*.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
………………省略部分输出信息………………


【实例 6】在 /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】搜索当前工作目录中所有近 7 天被修改过的文件:

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

相关文章