Linux find命令

这篇博客详细介绍了Linux中的find命令,包括其基本用法、参数选项、正则表达式查找、文件权限、时间戳、文件大小、深度查找、文件类型、执行命令以及逻辑操作符的使用。通过实例演示了如何查找、筛选和处理文件,是Linux系统管理员和开发者必备的知识。
摘要由CSDN通过智能技术生成

Linux find命令

思维导图

在这里插入图片描述

一、 find命令及选项的使用

1 命令格式:
find pathname -options [-print -ok -exec ...]
2. 命令功能:

用于在文件树中查找文件,并处理

3.命令参数:
pathname :find 命令所查找的目录路径
-print:find 命令将匹配的文件输出到标准输出
-exec: find 命令 对匹配的人家执行该参数所给出的shell命令,
-ok:和exec的作用相同 会给出提示让用户决定是否执行

二、命令选项:

1.按照文件名 查找文件 -name

​ 列出当前目录以及子目录下的所有文件

find .

​ 找到当前目录下名字为11.png的文件

find . -name "11.png"

找到当前目录下所有的 jpg 文件

find . -name "*.jpg"

找到当前目录下的 jpg 文件 png 文件

find . -name "*.jpg" -o -name "*.png"

找出当前目录下不是以 png 结尾的文件

find . ! -name "*.png"
2.根据正则表达式查找

找到当前目录下,文件名都是数字的png文件。

find . -regex "\./*[0-9]+\.png"
3.根据路径查找

找出当前目录下,路径中包含abc的文件/路径。

find . -path "*abc*"
4.根据文件权限查找文件 -perm
find . -perm 444
5.按照文件拥有者和所属分组来查找文件

​ -user 按照文件拥有者来查找文件

find . -user root

​ -group 按照文件所属分组来查找文件

find . -group root
5.按照文件时间查找文件

根据文件访问/修改/变化时间

支持下面的时间类型

  • 访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
  • 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
  • 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

​ 找出最近一天被修改过的文件

find . -type f -mtime -1

​ 找出最近1周内被访问过的文件

find . -type f -atime -7

​ 将日志目录里超过一个礼拜的日志文件,移动到/tmp/old_logs里。

find . -type f -mtime +7 -name "*.log" -exec mv {} /tmp/old_logs \;

​ 注意:{} 用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名。

​ 另外,\;用来表示命令结束,如果没有加,则会有如下提示

6.根据文件大小

通过-size来过滤文件尺寸。支持的文件大小单元如下

  • b —— 块(512字节)
  • c —— 字节
  • w —— 字(2字节)
  • k —— 千字节
  • M —— 兆字节
  • G —— 吉字节

找出当前目录下文件大小超过100M的文件

find . -type f -size +100M 
8.根据文件深度来查找文件

-depth -maxdepth -mindepth

-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

限制搜索深度

找出当前目录下所有的png,不包括子目录。

find . -maxdepth 1 -name "*.png"

相对应的,也是mindepth选项。

find . -mindepth 2 -maxdepth 2 -name "*.png"
9.根据文件类型查找

通过-type进行文件类型的过滤。

  • f 普通文件
  • l 符号连接
  • d 目录
  • c 字符设备
  • b 块设备
  • s 套接字
  • p Fifo

查找当前目录下,路径中包含abc的文件

find . -type f -path "*abc*"
10.忽略某个目录

-prune

使用这一选项可以使find命令不在当前指定的目录中查找,

如果同时使用了- depth选项,那么-prune选项将被find命令忽略。

示例:在test目录下查找文件,但不希望在test/test3目录下查找

find test -path "test/test3" -prune -o -print
11.找到文件后执行命令

​ -ok 执行命令前 ,会进行二次确认是否删除

​ -exec 不会

例子 -ok 删除

find . -type f -name "*.js" -ok rm {} \;
提示 "rm ./1.js"? 

​ -exec删除

find . -type f -name "*.js" -exec rm {} \;
12。linux命令(find中-a,-o,not的用法)

​ -o 是或者的意思
​ -a 是而且的意思
​ -not 是相反的意思

sudo find /etc -size +1M -exec echo {} \;
#在/etc目录下找文件大小在1M以上的文件并且显示,文件用换行符隔开。
sudo find /etc -size +1M | xargs echo
#达到-exec相同的功能但是用空格分开寻找到的文件。
#-exec后面的{} \;是不能少的。
find 紧跟的是指定开始寻找的绝对路径,我取当前路径。
find ./ -user 用户名
#find后面接的是开始寻找路径名,它会在这个路径下递归寻找。
#-user 指定用户名 
find ./ -not -user 用户名 
find ./ -not -name 文件名
find ./ -not -type 类型(一般文件f,目录d,字符文件c)
#寻找不匹配的文件。
find ./ -user 用户名 -o -type f
#寻找当前目录下用户你指定用户文件或者(-o)一般文件。
find ./ -size +1M -o -type d
#寻找当前目录下文件大于1M的文件或者是目录。
find ./ -size -1M -a -type f
#寻找当前目录下文件小于1M并且文件类型是一般文件的文件。
-o 是或者的意思
-a 是而且的意思
-not 是相反的意思
根据上面再从find的寻找方式中任意组合你乐意的方式。
find /etc -not -perm mode(222)
find /etc -not -perm -mode(-222)
find /etc -not -perm +mode(+222)
#-perm是按文件权限来查找文件
mode是完全匹配所对应的权限,如果不包括suid/sgid/sticky
-mode是权限位转化为二进制之后的1必须全部匹配,+mode则需要其中任何一个1被匹配。
-mode应该包含mode,+mode则包含-mode。

式中任意组合你乐意的方式。
find /etc -not -perm mode(222)
find /etc -not -perm -mode(-222)
find /etc -not -perm +mode(+222)
#-perm是按文件权限来查找文件
mode是完全匹配所对应的权限,如果不包括suid/sgid/sticky
-mode是权限位转化为二进制之后的1必须全部匹配,+mode则需要其中任何一个1被匹配。
-mode应该包含mode,+mode则包含-mode。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值