当前位置:首页 » 《关于电脑》 » 正文

Linux中find命令

17 人参与  2024年12月02日 18:01  分类 : 《关于电脑》  评论

点击全文阅读


1.find命令

Linux find 命令用于在指定目录下查找文件和目录。

它可以使用不同的选项来过滤和限制查找的结果。

2.基本语法

find   path  -option  【 -print 】  【 -exec   -ok   |xargs  |grep  】 【  command  {} \;  】

find [⽂件路径] [选项 选项的值]

-name *

-type f|d

options常用的有下选项:

-name   filename               #查找名为filename的文件-perm                                #按执行权限来查找-user    username             #按文件属主来查找-group groupname            #按组来查找-mtime   -n +n                   #按文件更改时间来查找文件,-n指n天以内,+n指n天以前-atime    -n +n                   #按文件访问时间来查找文件,-n指n天以内,+n指n天以前-ctime    -n +n                  #按文件创建时间来查找文件,-n指n天以内,+n指n天以前-nogroup                          #查无有效属组的文件,即文件的属组在/etc/groups中不存在-nouser                            #查无有效属主的文件,即文件的属主在/etc/passwd中不存-type    b/d/c/p/l/f             #查是块设备、目录、字符设备、管道、符号链接、普通文件-size      n[c]                    #查长度为n块[或n字节]的文件-mount                            #查文件时不跨越文件系统mount点-follow                            #如果遇到符号链接文件,就跟踪链接所指的文件-prune                            #忽略某个目录

案例,找到httpd.conf⽂件

[root@localhost ~]# find / -name "httpd.conf" -type f

# ⽆法找到,发现是没有安装httpd服务

[root@localhost ~]# yum install -y httpd

# 安装htppd服务

[root@localhost ~]# find / -name "httpd.conf" -type f

# 下⾯就是查找出的⽂件

/etc/httpd/conf/httpd.conf

/usr/lib/tmpfiles.d/httpd.conf

# 将/范围换成/etc/⽬录范围,这样查找更快,更加节省计算⾃资源

[root@localhost ~]# find /etc/ -name "httpd.conf" -type f

/etc/httpd/conf/httpd.conf

3.*通配符

在linux 系统中,如果要查找的⽂件的名称不清晰,可以使⽤部分⽂件名+*搜索

案例 获取/etc/中以.conf结尾的⽂件

[root@localhost ~]# find /etc/ -name "*.conf" -type f

/etc/resolv.conf/etc/libaudit.conf/etc/depmod.d/dist.conf/etc/dracut.conf/etc/prelink.conf.d/nss-softokn-prelink.conf/etc/prelink.conf.d/fipscheck.conf/etc/prelink.conf.d/grub2.conf/etc/modprobe.d/tuned.conf/etc/modprobe.d/firewalld-sysctls.conf/etc/modprobe.d/dccp-blacklist.conf/etc/rsyslog.d/listen.conf/etc/systemd/bootchart.conf/etc/systemd/coredump.conf/etc/systemd/journald.conf/etc/systemd/logind.conf/etc/systemd/system.conf/etc/systemd/user.conf/etc/host.conf/etc/dbus-1/system.d/org.freedesktop.hostname1.conf/etc/dbus-1/system.d/org.freedesktop.import1.conf/etc/dbus-1/system.d/org.freedesktop.locale1.conf/etc/dbus-1/system.d/org.freedesktop.login1.conf/etc/dbus-1/system.d/org.freedesktop.machine1.conf/etc/dbus-1/system.d/org.freedesktop.systemd1.conf/etc/dbus-1/system.d/org.freedesktop.timedate1.conf/etc/dbus-1/system.d/org.freedesktop.PolicyKit1.conf/etc/dbus-1/system.d/wpa_supplicant.conf/etc/dbus-1/system.d/nm-dispatcher.conf/etc/dbus-1/system.d/nm-ifcfg-rh.conf/etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf/etc/dbus-1/system.d/teamd.conf/etc/dbus-1/system.d/com.redhat.tuned.conf/etc/dbus-1/system.d/FirewallD.conf/etc/dbus-1/session.conf/etc/dbus-1/system.conf/etc/udev/udev.conf/etc/lvm/lvm.conf/etc/lvm/lvmlocal.conf/etc/NetworkManager/NetworkManager.conf/etc/X11/xorg.conf.d/00-keyboard.conf/etc/pki/ca-trust/ca-legacy.conf/etc/ld.so.conf/etc/ld.so.conf.d/mariadb-x86_64.conf/etc/ld.so.conf.d/kernel-3.10.0-862.el7.x86_64.conf/etc/ld.so.conf.d/bind-export-x86_64.conf/etc/ld.so.conf.d/kernel-3.10.0-1160.119.1.el7.x86_64.conf/etc/nsswitch.conf/etc/sestatus.conf/etc/yum/protected.d/systemd.conf/etc/yum/pluginconf.d/fastestmirror.conf/etc/yum/pluginconf.d/langpacks.conf/etc/yum/version-groups.conf/etc/krb5.conf/etc/sysctl.conf/etc/security/access.conf/etc/security/chroot.conf/etc/security/group.conf/etc/security/limits.conf/etc/security/limits.d/20-nproc.conf/etc/security/namespace.conf/etc/security/pam_env.conf/etc/security/sepermit.conf

搜索以http开头的⽂件

[root@localhost ~]# find /etc/ -name "http*" -type f/etc/sysconfig/httpd/etc/logrotate.d/httpd/etc/httpd/conf/httpd.conf

find命令的exec参数

案例:删除系统/var/log/ 10天之前的⽇志,格式都是.log⽂件

⽅法1 报错,rm不⽀持这种写法

⽅法2 rm和ls不⽀持管道

⽅法3 使⽤xargs 将查询结果交给rm

⽅法4 使⽤find执⾏ -exec

#查看⽬录中的txt⽂件[root@localhost opt]# ls -l *.txt#没有e.txt⽂件,在前⾯被删除了-rw-r--r--. 1 root root 0 7⽉  14 13:54 a.txt-rw-r--r--. 1 root root 0 7⽉  13 00:00 b.txt-rw-r--r--. 1 root root 0 7⽉  12 00:00 c.txt-rw-r--r--. 1 root root 0 7⽉  11 00:00 d.txt# 创建⽂件并且指定⽂件修改⽇期[root@localhost opt]# touch -m -d "2024-7-10 00:00" e.txt[root@localhost opt]# ls -l 总⽤量 0-rw-r--r--. 1 root root 0 7⽉  14 13:54 a.txt-rw-r--r--. 1 root root 0 7⽉  13 00:00 b.txt-rw-r--r--. 1 root root 0 7⽉  12 00:00 c.txt-rw-r--r--. 1 root root 0 7⽉  11 00:00 d.txt-rw-r--r--. 1 root root 0 7⽉  10 00:00 e.txt# 查找三天以前的⽂件[root@localhost opt]# find /opt/ -name "*.txt" -type f -mtime +3/opt/e.txt# 使⽤-exec ⽂件调⽤rm函数 {}表示前⾯find查到的内容 \;表示标识符# 这⾥在{}后⾯没有打空格报错了,在{}后应该打空格[root@localhost opt]# find /opt/ -name "*.txt" -type f -mtime +3 -exec rm -rf {}\;find: 遗漏“-exec”的参数[root@localhost opt]# find /opt/ -name "*.txt" -type f -mtime +3 -exec rm -rf {} \;总⽤量 0-rw-r--r--. 1 root root 0 7⽉  14 13:54 a.txt-rw-r--r--. 1 root root 0 7⽉  13 00:00 b.txt-rw-r--r--. 1 root root 0 7⽉  12 00:00 c.txt-rw-r--r--. 1 root root 0 7⽉  11 00:00 d.txt


点击全文阅读


本文链接:http://zhangshiyu.com/post/195564.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1