Linux下find命令详解

find     #查找文件

#按照文件名、大小、时间、权限、类型、所属者、所属组来搜索文件
格式:
    find    查找路径   查找条件   具体条件(按文件名或时间大小等)   操作
注意:
    find命令默认的操作是print输出
    find是检索文件的,grep是过滤文件中字符串

Linux下find命令详解_第1张图片

示例:
    • 按照文件名搜索
        ○ -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 天前修改的文件

Linux下find命令详解_第2张图片

 四、按照所有者和所属组搜索

    • -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目录下
#{ }代表拷贝源文件   \; 代表结束

你可能感兴趣的:(linux,运维,服务器)