linux基础文件查找之find

1.find查找概述

1、为什么要有文件查找,因为很多时候我们可能会忘了某个文件所在的位置,此时就需要通过find来查找。
2、find命令可以根据不同的条件来进行查找文件,例如:文件名称、文件大小、文件修改时间、属主属组、权限、等等方式。同时find命
3、工作特性:查找速度略慢、精确查找、实时查找

find命令基本语法

命令路径选项表达式动作
find[path][optiong][expression][action]

2.find查找示例

2.1 find根据文件名查找

#1.查找/etc目录下包含ifcfg-ens33名称的文件
[root@jiangshen ~]# find /etc -name "ifcfg-ens33"

#2.-i 忽略大小写
[root@jiangshen ~]# find /etc -iname "ifcfg-ens33"
#查找/etc目录下包含ifcfg-eth名称所有文件
[root@jiangshen ~]# find /etc/ -name "ifcfg-ens*"
[root@jiangshen ~]# find /etc -iname "ifcfg-ens*"

2.2 根据权限查找

#精切匹配644权限
[root@jiangshen ~]# find . -perm 644 -ls
#包含444权限即可
[root@jiangshen ~]# find . -perm -444  -ls
#查找全局可写(每位权限必须包含w)
[root@jiangshen ~]# find . -perm -222 -ls
#包含set uid
[root@jiangshen ~]# find  /usr/sbin -perm -4000 -ls
#包含set gid
[root@jiangshen ~]# find  /usr/sbin -perm -2000 -ls
#包含sticky
[root@jiangshen ~]# find  /usr/sbin -perm -1000 -ls

说明:
mode:	精确权限匹配
/mode:	任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足9位权限之间存在"或关系"
-mode:	每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足9位权限之间存在"与关系"

2.3 根据文件从属关系查找

#查找属主是jack
[root@jiangshen ~]# find /home -user jack
#查找属组是admin
[root@jiangshen ~]# find /home -group admin
#查找属主是jack, 属组是admin
[root@jiangshen ~]# find /home -user jack -group admin
#查找属主是jack, 并且属组是admin
[root@jiangshen ~]# find /home -user jack -a -group admin
#查找属主是jack, 或者属组是admin
[root@jiangshen ~]# find /home -user jack -o -group admin
#查找没有属主
[root@jiangshen ~]# find /home -nouser
#查找没有属组
[root@jiangshen ~]# find /home -nogroup
#查找没有属主或属组
[root@jiangshen ~]# find /home -nouser -o -nogroup

2.4 根据文件的类型查找

# f 文件
[root@jiangshen ~]# find /dev -type f
# d 目录
[root@jiangshen ~]# find /dev -type d
# l 链接
[root@jiangshen ~]# find /dev -type l
# b 块设备
[root@jiangshen ~]# find /dev -type b
# c 字符设备
[root@jiangshen ~]# find /dev -type c
# s 套接字
[root@jiangshen ~]# find /dev -type s
# p 管道文件
[root@jiangshen ~]# find /dev -type p

2.5 根据文件的大小查找

#1.查找大于5M的文件
[root@jiangshen ~]# find /etc -size +5M

#2.查找等于5M的文件
[root@jiangshen ~]# find /etc -size 5M

#3.查找小于5M的文件
[root@jiangshen ~]# find /etc -size -5M

2.6 根据时间戳查找

#1.查找7天以前的文件(不会打印当天的文件)
[root@jiangshen ~]# find ./ -iname "file-*" -mtime +7

#2.查找最近7天的文件,不建议使用(会打印当天的文件)
[root@jiangshen ~]# find ./ -iname "file-*" -mtime -7

#3.查找第7天文件(不会打印当天的文件)
[root@jiangshen ~]# find ./ -iname "file-*" -mtime 7

#4.本地文件保留最近7天的备份文件, 备份服务器保留3个月的备份文件
find /backup/ -iname "*.bak" -mtime +7 -delete
find /backup/ -iname "*.bak" -mtime +90 -delete

3.组合测试

符号作用
-a
-o
-not!
#1.查找当前目录下,属主不是hdfs的所有文件
[root@jiangshen ~]# find . -not -user hdfs 
[root@jiangshen ~]# find . ! -user hdfs
    
#2.查找当前目录下,属主属于hdfs,且大小大于300字节的文件
[root@jiangshen ~]# find . -type f -a -user hdfs -a -size +300c
        
#3.查找当前目录下的属主为hdfs或者以xml结尾的普通文件
[root@jiangshen ~]# find . -type f -a \( -user hdfs -o -name '*.xml' \)

4.处理动作

动作含义
-print打印查找到的内容(默认)
-ls类似于对查找到的文件执行"ls -l"命令,输出文件的详细信息
-delete删除查找到的文件
-fls /PATH/TO/SOMEFILE把查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} \ ;对查找到的每个文件执行由COMMAND表示的命令,每次操作都由用户进行确认
-exec COMMAND {} \ ;对查找的每个文件执行由COMMAND表示的命令
注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递给后面的命令但是有些命令不能接受过长的参数,此时命令执行会失败,另一种方式可规避此问题

4.1 find查找后的动作命令示例

#1.使用-print打印查找到的文件
[root@jiangshen ~]# find /etc -name "ifcfg*"
[root@jiangshen ~]# find /etc -name "ifcfg*" -print

#2.使用-ls打印查找到的文件,以长格式显示
[root@jiangshen ~]# find /etc -name "ifcfg*" -ls

#3.使用-delete删除文件,但仅能删除空目录
[root@jiangshen ~]# find /etc -name "ifcfg*" -delete

#4.使用-ok实现文件拷贝,但会提示是否拷贝
[root@jiangshen ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \;

#5.使用-exec实现文件拷贝和文件删除。
[root@jiangshen ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \;
[root@jiangshen ~]# find /etc -name "ifcfg*" -exec rm -f {} \;

4.2 使用find命令结合xargs

#xargs将前者命令查找到的文件作为一个整体传递后者命令的输入
[root@jiangshen ~]# touch file.txt
[root@jiangshen ~]# find . -name "file.txt" |xargs rm -f
[root@jiangshen ~]# find . -name "file.txt" |xargs -I {} cp -rvf {} /var/tmp
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值