Linux find命令

2024-05-01 53

find 命令是 Linux 系统中一个强大而灵活的文件搜索工具,允许用户根据指定的路径和条件查找文件或目录,支持使用正则表达式,并且可以与管道符结合使用,实现更加复杂的搜索操作。本教程主要介绍Linux find命令的语法格式、常用参数和使用示例。

与 whereis、which 或 locate 等其他搜索命令相比,find 通常执行的是从根目录(/)开始的全面搜索。在服务器负载较高的情况下,建议避免在高峰时段使用 find 进行模糊搜索,因为这可能会消耗大量系统资源。

一、语法格式

find 命令的基本语法格式如下:

find [路径] [条件] [文件名]

二、常用参数

下面是一些常用的 find 参数:

1、-name: 匹配指定的文件名模式。

2、-nouser: 查找没有所有者的文件。

3、-perm: 根据文件权限进行匹配。

4、-nogroup: 查找没有所属组的文件。

5、-user: 匹配特定用户拥有的文件。

6、-newer: 查找比指定文件更新的文件。

7、-group: 匹配特定组拥有的文件。

8、-type: 根据文件类型进行匹配(如普通文件、目录等)。

9、-mtime: 匹配最后修改时间符合特定条件的文件。

10、-size: 根据文件大小进行匹配。

11、-atime: 匹配最后访问时间符合特定条件的文件。

12、-prune: 排除指定目录不进行搜索。

13、-ctime: 匹配最后状态改变时间符合特定条件的文件。

14、-exec: 对搜索结果执行指定的命令。

三、使用示例

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

[root@zzbaike ~]# 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@zzbaike ~]# find /etc -size +1M
/etc/selinux/targeted/policy/policy.31
/etc/udev/hwdb.bin

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

[root@zzbaike ~]# 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@zzbaike ~]# find .
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
./anaconda-ks.cfg
………………省略部分输出信息………………

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

[root@zzbaike ~]# 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@zzbaike ~]# 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@zzbaike ~]# find . -mtime +7
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
………………省略部分输出信息………………

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

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

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

[root@zzbaike ~]# 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
………………省略部分输出信息………………

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

[root@zzbaike ~]# find / -name "*.mp4" -exec rm -rf {} \;
  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
Linux find命令
上一篇: Linux vi命令
Linux find命令
下一篇: Linux rpm命令