find linux -name,find 命令使用详细

linux上可以在文件系统上在指定的路径查找需要的文件,可以使用的文件查找命令有: locate , find

locate 是非实时查找,也叫数据库查找, 它基于索引进行的查找,基于数据库的查找,依赖于已经构建的索, linux索引实在系统空闲时自动进行的,是一个周期性的任务。如果要使用locate来做精确查找,需要先手动构建数据库索引。在系统生产运行时,构建数据库索引比较费资源。 特点如下:

(!) 查找速度快

(2) 可以模块查找

(3) 非实时查找

使用: locate 查找关键字

find 实时查找。它通过便利目标目录下的所有文件来匹配目标文件,不依赖与其他外部环境。 特点如下:

(1) 较locate 慢

(2) 可以精确查找

(4) 实时查找

find 命令使用

语法:

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression] [action]

说明:

path... 查找路径,可以指定多个,默认为当前路径

expression 查找的条件,包括根据文件名、类型、大小、修改时间等进行查找,默认查找当前路径所有文件

action: 处理动作,对符合条件的文件所做的操作,默认为显示到标准输出

查找条件:

-name 根据文件名查找, 支持glob,即包括: *,?,[],[^],来匹配文件名

-例如:

find /etc/ -name passwd 精确查找

find /etc/ -name '*passwd*' 匹配查找

-iname 根据文件名查找,不区分大小写

-regex pattern 使用正则表达式来匹配文件(路径)

根据属主属组查找:

-user username 查找属主为username的文件

例如:

find /home -user ansible -ls

ls是对找到的文件查看长格式

-group groupname 查找属组为groupname的文件

-uid uidnumber 查找uid为uidnumber的文件

-gid gidnumber 查找gid为gidnumber的文件

-nouser 查找没有属主的文件

-nogroup 查找没有属组的文件

根据文件类型查找:

-type type

f 普通文件

d 目录

l 链接

b 块设备

s 套接字

c 字符设备

p 管道文件

注意: 如果没有限制文件类型,那么默认显示所有的文件类型

根据文件大小查找

查找单位: k M G

-size size 查找(size-1, size] 之间的大小的文件

-size -size 查找[0, size-1] 之间的大小的文件

-size +size 查找[size, 无穷大] 之间的大小的文件

例如;

根据时间戳进行查找

以天为单位

-atime +/- 时间 [t,t+1)/+[t+1, 无穷大]/-[0,t)

-ctime +/- 时间 [t,t+1)/+[t+1, 无穷大]/-[0,t)

-mtime +/- 时间 [t,t+1)/+[t+1, 无穷大]/-[0,t)

以分钟为单位

-amin +/- 时间

-cmin +/- 时间

-mmin +/- 时间

根据权限查找:

-perm +/- mode

-perm mode 根据权限精确查找

-perm +mode u|g|o对象中任何一类匹配即可

-perm -mode 每一类对象都必须拥有(包含)为其指定的权限标准

说明: + 相当于或关系(其中一个符合) - 相当于且关系(所有用户都要符合)

注意: + 在c6版本上要用/替代, +被废弃

查找条件组合:

-a 与

-o 或

-not 非

例如:

find / ( -nouser -o -nogroup ) -ls

find /home ( -not -user root -a -not -user root ) -ls

find /home -not ( -user root -o -user root ) -ls

处理行为

-print 默认的处理方式,显示结果到标准输出

-ls 长格式显示

-deete 删除查找到的文件

-fls /path/to/path 查找到的所有文件的长格式信息保存至指定文件中

-ok command {} ; 对每个查找到的文件执行command指定的命令 ,执行命令之前会让用户确认。

-exec command {} ; 指定命令不需要用户确认

说明: {} 表示引用被查找到的文件;

注意: find 一次性查找到所有的符合条件文件然后在传递给后面的命令。这种方式可能会导致处理失败。可以通过xargs command 来执行命令。

示例:

查找属主的文件改为root

find /tmp -nouser -exec chown root {} ;

find /home -perm -700 -exec cat {} ;

find /tmp -name a.txt -ok du {} ;

查找5分钟之内改过的文件:

find /tmp -cmin -5

修改文件名称:

find /tmp -name a.txt -exec mv {} {}.csv ;

find 命令使用示例

查找/var目录下属主为root, 且属组为mail的所有文件或目录

find /var -user root -a -group mail -ls

查找/user目录下不属于root、bin和hadoop的所有文件或目录

find /usr -not ( -user root -o -user bin -o -user hadoop ) -ls

查找/home目录下最近一周内其内容修改过的同时属主不为root 也不是hadoop的文件或目录

find /home -atime -7 -a -not ( -user root -o -user hadoop ) -ls

查找当前系统上没有属主或属组,且最近一周内曾经被访问过的文件或是目录

find / -nouser -a nogroup -a atime -7

查找/etc目录下大于1m且类型为普通文件的的所有文件或目录

find /etc -not -perm /222

查找/etc下至少有一类用户没有执行权限的文件

find /etc -not -perm -222 -ls

查找/etc目录下所有用户都没有写权限的文件

find /etc -not -perm /222 -ls

查找/etc/init.d目录下,所有用户都由执行权限,且其他用户有写权限的文件.

find /etc/init.d -perm -113

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值