Linux之find命令

美髯公
• 阅读 1718
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间。

命令格式

> find pathname -options [-print -exec -ok ...] 

命令功能

用于在文件树种查找文件,并作出相应的处理

命令参数

  • -amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
  • -anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
  • -atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
  • -cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
  • -cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
  • -ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
  • -daystart:从本日开始计算时间;
  • -depth:从指定目录下最深层的子目录开始查找;
  • -empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
  • -exec<执行指令>:假设find指令的回传值为True,就执行该指令;
  • -false:将find指令的回传值皆设为False;
  • -fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
  • -follow:排除符号连接;
  • -fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
  • -fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
  • -fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
  • -fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;
  • -gid<群组识别码>:查找符合指定之群组识别码的文件或目录;
  • -group<群组名称>:查找符合指定之群组名称的文件或目录;
  • -help或——help:在线帮助;
  • -ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
  • -iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
  • -inum<inode编号>:查找符合指定的inode编号的文件或目录;
  • -ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
  • -iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
  • -links<连接数目>:查找符合指定的硬连接数目的文件或目录;
  • -iname<范本样式>:指定字符串作为寻找符号连接的范本样式;
  • -ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
  • -maxdepth<目录层级>:设置最大目录层级;
  • -mindepth<目录层级>:设置最小目录层级;
  • -mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
  • -mount:此参数的效果和指定“-xdev”相同;
  • -mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
  • -name<范本样式>:指定字符串作为寻找文件或目录的范本样式;
  • -newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
  • -nogroup:找出不属于本地主机群组识别码的文件或目录;
  • -noleaf:不去考虑目录至少需拥有两个硬连接存在;
  • -nouser:找出不属于本地主机用户识别码的文件或目录;
  • -ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
  • -path<范本样式>:指定字符串作为寻找目录的范本样式;
  • -perm<权限数值>:查找符合指定的权限数值的文件或目录;
  • -print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
  • -print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
  • -printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
  • -prune:不寻找字符串作为寻找文件或目录的范本样式;
  • -regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;
  • -size<文件大小>:查找符合指定的文件大小的文件;
  • -true:将find指令的回传值皆设为True;
  • -type<文件类型>:只寻找符合指定的文件类型的文件;
  • -uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
  • -used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
  • -user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
  • -version或——version:显示版本信息;
  • -xdev:将范围局限在先行的文件系统中;
  • -xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。

几个容易被搞混的参数

  • -amin n 查找系统中最后n分钟访问的文件(如:cat)
  • -atime n 查找系统中最后n*24小时访问的文件(如:cat)
  • -cmin n 查找系统中最后n分钟被改变文件状态的文件(如:修改文件的权限)
  • -ctime n 查找系统中最后n*24小时被改变文件状态的文件(如:修改文件的权限)
  • -mmin n 查找系统中最后n分钟被改变文件数据的文件(如:修改文件的内容)
  • -mtime n 查找系统中最后n*24小时被改变文件数据的文件(如:修改文件的内容)
n有正负之分,n表示文件更改时间距离为n天(分钟), -n表示文件更改时间距离在n天(分钟)以内,+n表示文件更改时间距离在n天(分钟)以前。

mtime为例子

  • -mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。
  • -mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。
  • -mtime +1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件
  • -mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件
为什么-mtime +1 表示文件修改时间为大于1天的文件,即距离当前时间48小时之外的文件,而不是24小时之外的呢?
因为n值只能是整数,即比1大的最近的整数是2,所有-mtime +1不是比当前时间大于1天(24小时),而是比当前时间大于2天(48小时)。

查找系统中24小时以内被访问过的文件

> find / -atime -1

查找系统中24小时以内被修改过内容的文件

> find / -mtime -1

查找系统中48小时之前被修改过内容的文件

> find / -mtime +1

查找系统中所有的.log结尾的文件

> find / -name *.log

查找系统中文件大于100M的文件

> find / -size +100M
  • b —— 块(512字节)
  • c —— 字节
  • w —— 字(2字节)
  • k —— 千字节
  • M —— 兆字节
  • G —— 吉字节

查找系统中文件大于100M小于500M的文件

> find / -type f -size +100M -size -500M

查找系统中文件大于500M的文件,并删除

> find / -type f -size +500M -delete
或
> find / -type f -size +500M -exec rm -rf {} \;
或
> find / -type f -size +500M | xargs rm 

查找系统中权限为777的文件

> find / -perm 777

查找系统中的空文件

> find / -empty -type f

原文链接:https://rumenz.com/rumenbiji/...
微信公众号:入门小站

点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
blmius blmius
4年前
linux find 命令查找文件和文件夹
查找目录:find/(查找范围)name'查找关键字'typed查找文件:find/(查找范围)name查找关键字print详解:find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
Stella981 Stella981
3年前
Python+Selenium自动化篇
本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子。0.元素定位方法主要有:id定位:find\_element\_by\_id('')name定位:find\_element\_by\_name('')class定位:find\_element\_by\_class\_name(''
Stella981 Stella981
3年前
Linux的一些很有用的命令或者方法(持续更新)
0.重启(reboot)、关机(shutdown,halt)等,其中立刻关机:立刻关机:shutdownh01\.find命令:很强很重要语法:find\起始目录\寻找条件 操作find/文件名(这样做经常找不到文件,而且还浪费时间。不知道有么有更好的方式。)批量查找文件中的字符串: find|
Stella981 Stella981
3年前
Linux Shell 文本处理工具集锦
本文将介绍Linux下使用Shell处理文本时最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;提供的例子和参数都是最常用和最为实用的;我对shell脚本使用的原则是命令单行书写,尽量不要超过2行;如果有更为复杂的任务需求,还是考虑python吧;find文件查找
Wesley13 Wesley13
3年前
linux查找文件命令find
 每一种操作系统都是由成千上万个不同种类的文件所组成的。其中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经常忘记某份文件放在硬盘中的哪个地方。在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击“开始”-“搜索”中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档。
Stella981 Stella981
3年前
Linux远程ssh设置expect自动填写密码验证
我们需要远程登录服务器,登陆的同时呢执行find命令获取一个时间段内的文件名,并将他们通过rsync下载到本地。因为要跳过已经下载好的目录,scp命令就不够用了,这里用了rsync。因为这里find命令只是获取文件名方便后续下载而已,所以设置find的参数maxdepth1来设置扫描深度,防止遍历子文件夹。同时为了防止根目录也输出,我们设置f
Stella981 Stella981
3年前
Linux file 命令
file 命令在Linux中用来识别文件类型,也可用来辨别一些文件的编码格式。它通过查看文件头部信息来获取文件类型。命令格式file参数文件地址命令参数_\b_列出文件辨识结果时,不显示文件名称。_\c_详细显示指令执行过
Stella981 Stella981
3年前
Linux中递归更改文件扩展名的命令
比如我需要将jpg结尾的图片文件修改为png结尾的如果能用rename命令,运行下面的find.name'.jpg'execrename.jpg.png{}如果不能用rename命令,使用下面的find.name".jpg"execbashc'mv"$1"
Stella981 Stella981
3年前
Linux find 命令详解
Linux上的 find 命令是 findutil 软件包的一部分,一般已经默认集成在了几乎所有的发行版中。find命令有非常大的灵活性,可以向其指定丰富的搜索条件(如文件权限、属主、属组、文件类型、日期和大小等)来定位系统中的文件和目录。此外,find还支持对搜索到的结果进行多种类型的命令操作。一、简介
Stella981 Stella981
3年前
Linux 常用基础命令
现在将在实际工作中经常使用的Linux命令整理一下给自己做个备份ll 显示当前目录下所有的子目录和文件cd 切换当前目录至指定目录进入系统根目录cd /进入当前用户目录cd ~返回上级目录cd ..pwd比较常用的
美髯公
美髯公
Lv1
十步杀一人,千里不留行。——李白
文章
4
粉丝
0
获赞
0