find #查找文件
#按照文件名、大小、时间、权限、类型、所属者、所属组来搜索文件
格式:
find 查找路径 查找条件 具体条件(按文件名或时间大小等) 操作
注意:
find命令默认的操作是print输出
find是检索文件的,grep是过滤文件中字符串
示例:
• 按照文件名搜索
○ -name: 按照文件名搜索
○ -iname: 按照文件名搜索,不区分文件名大小写
○ -inum: 按照inode 号搜索
○ 没有那个文件或目录: find命令在执行时,在内存中自己产生的临时文件,执行完既消失
[root@node1 ~]# find /etc/ -name "passwd" #查找文件名为passwd的文件
/etc/pam.d/passwd
/etc/passwd[root@node1 ~]# find /etc/ -name "hosts"
/etc/hosts[root@node1 ~]# find /etc/ -name "a*" #以a开头的文件名
/etc/ca-trust/source/anchors
/etc/libvirt/nwfilter/allow-arp.xml
/etc/libvirt/nwfilter/allow-dhcp.xml
/etc/libvirt/nwfilter/allow-incoming-ipv4.xml
/etc/libvirt/nwfilter/allow-ipv4.xml
/etc/libvirt/nwfilter/allow-dhcp-server.xml
/etc/libvirt/qemu/networks/autostart
/etc/at.allow
一、find的通配符
• "*":任意字符任意个数
• "?":任意字符1个内容
示例:
[root@node1 ~]# find /etc/ -iname "B*" #查找忽略B的大小写
/etc/binfmt.d
/etc/selinux/targeted/booleans.subs_dist
/etc/ld.so.conf.d/binutils-x86_64.conf
/etc/libibverbs.d/bnxt_re.driver
/etc/logrotate.d/btmp
/etc/bluetooth[root@node1 ~]# find /etc/ -iname "?b*" #查找第二个字母为b的文件
/etc/selinux/targeted/contexts/dbus_contexts
/etc/ld.so.conf.d/jbig2dec-x86_64.conf
/etc/ld.so.conf.d/ebtables-x86_64.conf
/etc/asciidoc/dblatex[root@node1 ~]# find / -name "*.cfg" #查找以 .cfg 结尾的文件
/boot/grub2/grub.cfg
/etc/grub2.cfg
/etc/libblockdev/conf.d/10-lvm-dbus.cfg
/etc/libblockdev/conf.d/00-default.cfg
/etc/vdpau_wrapper.cfg
二、按照文件大小搜索
• -size [+ -大小: 按照指定大小搜索文件,“+”的意思是搜索比指定大小还要大的文件,“”的意思是搜索比指定大小还要小的文件
示例:
[root@node1 ~]# find / -size +100M #找大于100M的文件
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/proc/kcore[root@node1 ~]# find / -size -100M #查找小于100M的文件
[root@node1 ~]# find / -size 100M #查找等于100M的文件
三、按照修改时间搜索
• -atime [+|-]时间: 按照文件访问时间搜索
• -mtirne [+|-]时间:按照文件数据修改时间搜索
• -ctime [+|-]时间: 按照文件状态修改时间搜索
• -newer file: 把file修改时间更新的文件列出来
注意:时间范围问题
○ -5:代表 5 天内修改的文件
○ 5: 代表前 5~6 天那一天修改的文件
○ +5: 代表 6 天前修改的文件
四、按照所有者和所属组搜索
• -uid 用户ID: 按照用户 ID 查找所有者是指定 ID 的文件
• -gid 组ID: 按照用户组 ID 查找所组是指定 ID 的文件
• -user 用户名: 按照用户名查找所有者是指定用户的文件
• -group 组名: 按照组名查找所属组是指定用户组的文件。
示例:
[root@node1 ~]# find / -user root #查找归属于管理员的文件
/proc/1899/task/2038/net/fib_trie
/proc/1899/task/2038/net/if_inet6
/proc/1899/task/2038/net/mcfilter
/proc/1899/task/2038/net/rt_cache
/proc/1899/task/2038/net/sockstat
/proc/1899/task/2038/net/udplite6
/proc/1899/task/2038/net/connector
/proc/1899/task/2038/net/dev_mcast
/proc/1899/task/2038/net/dev_snmp6
五、按照权限搜索
• -perm 权限模式:查找文件权限刚好等于“权限模式”的文件,常用
• -perm -权限模式: 查找文件权限全部包含“权限模式”的文件
• -perm +权限模式: 查找文件权限包含“权限模式”的任意一个权限的文件。
• 如果要在整个系统中搜索权限中包括SUID权限的所有文件,只需使用-4000即可:
示例:
[root@node1 ~]# find / -perm 400 #查找只读权限
[root@node1 ~]# find / -perm 777 #查找完整权限的文件
六、按文件类型寻找
-type d: 查找目录
-type f: 查找普通文件-type l: 查找软链接文件
示例:
[root@node1 ~]# find / -type d #在根目录下查找目录
七、按照逻辑运算符
-a: and 逻辑与
-o: or 逻辑或
-not: not 逻辑非
优先级:与>或>非
示例:
[root@node1 ~]# find / -size +10k -a -size -50k #查看大于10k且小于50k的文件
[root@node1 ~]# find /etc/ -name "e*" -o -name "f*" #查找以e或f开头的文件
/etc/ld.so.conf.d/evolution-data-server-x86_64.conf
/etc/ld.so.conf.d/epiphany-x86_64.conf
/etc/ld.so.conf.d/freerdp-x86_64.conf
/etc/ld.so.conf.d/ebtables-x86_64.conf
/etc/ld.so.conf.d/esc-x86_64.conf
/etc/libibverbs.d/efa.driver
[root@node1 ~]# find /etc/ -name "d*" -user root #默认为and,不写默认为and
/etc/dnsmasq.conf
/etc/fwupd/remotes.d/dell-esrt.conf
/etc/fwupd/daemon.conf
/etc/gnome-vfs-2.0/modules/default-modules.conf
/etc/libvirt/qemu/networks/autostart/default.xml
/etc/libvirt/qemu/networks/default.xml
八、-exec……{}\;
[root@node1 ~]# find ~ -user root -exec cp -a {} /media \;
#找到家目录下归属于root账户的文件将~ -user root #拷贝到/media目录下
#{ }代表拷贝源文件 \; 代表结束