2.3.2 查找文件我最强:find
2.3.2.1 find查找常用命令示例
find / -name 'wfy.txt'
# 从根目录下开始查找文件wfy.txt find . -name '*fy.txt'
# 当前目录下,查找fy.txt后缀的文件
# “.”表示当前目录,"*"表示任意长度字符 find / -type f -size +500M
# 从根目录开始查找,500M以上文件
# / :根目录
# . : 当前目录
# -type f: f为普通文件类型,f改为d则是目录文件,l则是符号链接文件,-type 还有其他参数,不在这里一一列举
# -size +500M :500MB以上
# 一般磁盘空间不够,删除垃圾文件时会使用到此命令 find . -type f -size +1k
# 查找当前文件夹下超过1k的文件,注意k是小写。 find . -type f -mtime -30
# 查找当前目录下30天之内修改过的文件
# -mtime:代表修改时间,最常用,类似参数有-atime、-ctime
# -atime:代表访问时间,查看过就算
# -ctime:文件状态改变时间
# -30:代表30天以内,30为n,数字自己填写
# +30:30天以前
# 30:距今第30天 find /var/log/ -mtime +30 -name '*.log'
# 查找指定目录/var/log/ 下30天以前的log文件 find /etc ! -type f
# 查找 /etc 目录下不是普通文件的 文件
# "!":感叹号,取反 find /etc ! -type l -mtime -30
# 查找/etc 目录下不是符号链接文件,并在30天内被修改过的文件 find /etc -maxdepth 1 ! -type l -mtime -30
# 查找/etc 第一层目录下不是符号链接文件的文件,并在30天内被修改过
# -maxdepth : 前面du学过,指定目录层级,-maxdepth 1代表第1层,-maxdepth 2代表延伸到第二层

-maxdepth 可能有点不好理解,所以截了个示例图

2.3.2.2 使用find 组合命令:统计与删除

基本常用的find命令都已经讲完了,再说下运维中可能常用的一个组合命令,利用find删除N天以前的文件或日志。

先用wc -l来统计下log数量,再删除看看

find / -name '*.log' -mtime +300 | wc -l
# 从根目录下开始搜索300天之前的log文件,并统计数量
# “|”:管道符,将前面查到的数据作为输入源给后面的命令

第一种删除方式:-exec

find / -name '*.log' -mtime +300 -exec rm {} \;
# 查找30天以前的log文件,使用-exec加rm将其删除
# 再使用上面的命令重新查看一次
find / -name '*.log' -mtime +300 | wc -l



第二种删除方式:-ok

find / -name '*.log' -mtime +200 -ok rm {} \;
# -ok : 询问删除,y删除,n不删除,回车默认不删除



第三种删除方式:xargs

依次执行查看结果

find / -name '*.log' -mtime +100 | wc -l

find / -name '*.log' -mtime +100 | xargs rm -f
# xargs : 命令传递参数过滤器,与管道符“|”一同使用,将前面的命令传递给后面的命令使用 find / -name '*.log' -mtime +100 | wc -l

2.3.2.3 find与xargs的组合使用

对于50天前的log文件进行详情查看

find / -name '*.log' -mtime +50 | xargs ls -l
# 利用xargs + ls -l 命令来进行文件的详细属性查看

移除50天前的文件

mkdir /logback
# 创建根目录下的 /logback文件夹 find / -name '*.log' -mtime +50 | xargs -i mv {} /logback
# 将50天前的所有log文件移动到 /logback 文件夹下
# xargs -i + {},将前面查找到的文件都作为参数给mv命令执行 ls -l /logback
# 查看 /logback 下所有文件详情

2.3.2.4 find下xargs与exec的区别

区别一:

-exec,是将查找到的结果文件名逐个传递给后面的命令执行,文件多会导致效率低;

xargs,则是一次性传递,效率较高,并可使用-n参数控制传递文件个数。

区别二:

-exec,文件名有空格等特殊字符也照常处理;

xargs,处理特殊的文件名(例如文件名有空格)需要采用特殊的处理方式(find . -name "*edu" -pringt0| xargs -0 ls -l)

验证区别一,示例如下:

 find /logback -name '*.log'  -exec echo yaomaomao {} \;

find /logback -name '*.log'  | xargs echo yaomaomao

可以看到使用-exec每次获得一个文件输出一次,xargs则只输出了一行。

xargs还可以用-n参数控制每次输出的文件个数

find /logback -name '*.log'  | xargs -n5 echo yaomaomao

可以看到,每行输出5个参数(文件名),不足的行输出剩下的。

验证区别二,示例如下:

touch yaomaomao.txt;touch "yaomaomao centOS 7";ll yaomaomao*
# 小技巧:使用“;”分号可以一次性执行多个命令
# 注意:查看和创建带有空格的文件时,使用引号括起来

		find . -name "yaomaomao*" -exec ls -lh {} \;
# 正常查找出来 find . -name "yaomaomao*" | xargs ls -lh
# 可以看到使用此命令报找不到那个文件或目录 find . -name "yaomaomao*" -print0 | xargs -0 ls -lh
# 正常查找

其实find还有很多强大的功能,截两张图大家就知道了



这本书就是我开头推荐的《核心系统命令实战》。

公众号注册的比较晚,没有评论功能,所以一般用来发长文。

知识星球相当于技术朋友圈,有问题大家可以提问,讨论。

欢迎关注我的公众号:姚毛毛的博客

欢迎加入我的知识星球,目前免费哦。

知识星球:姚毛毛的私密花园

公众号注册的比较晚,没有评论功能,所以一般用来发长文。

知识星球相当于技术朋友圈,有问题大家可以提问,讨论。

欢迎关注我的公众号:姚毛毛的博客

欢迎加入我的知识星球,目前免费哦。

知识星球:姚毛毛的私密花园

![知识星球]

linux常用命令指南——查找文件我最强:find的更多相关文章

  1. 教老婆学Linux运维(二)Linux常用命令指南【上】

    目录 教老婆学Linux(二)Linux常用命令指南[上] 一.概述 二.常用命令 教老婆学Linux(二)Linux常用命令指南[上] 作者:姚毛毛的博客 tips:文章太长,分两篇发出,本篇发前三 ...

  2. 教老婆学Linux运维(二)Linux常用命令指南【下】

    目录 tips:紧接上一篇,Linux常用命令指南[上] 2.4 文件解压缩 2.4.1 官宣的linux压缩工具:tar tar的基本命令格式为 tar [参数选项] [文件或目录] 我们前面学的命 ...

  3. Linux常用命令之 查找命令 find(一)

    我们都知道在Linux中有着上千条的命令,而常用命令不过百条. 我们也知道在Linux里面“一切皆文件”,那么如何能够快速的找到你想要找的东西就显得尤为重要. find是Linux里面最重要的命令之一 ...

  4. Linux常用命令(第二版) --文件搜索命令

    文件搜索命令 1.which /usr/bin/which #显示系统命令所在目录,绝对目录,不能查找文件 格式:which [系统命令] e.g. which ls 附-whereis:也可以查找到 ...

  5. Linux常用命令01(文件和目录)

    目标 查看目录内容 ls 切换目录 cd 创建和删除文件 touch rm mkdir 拷贝和移动文件 cp mv 查看文件内容 cat more grep 其他 echo 重定向 > 和 &g ...

  6. Linux常用命令学习2---(文件搜索命令locate find、命令搜索命令whereis which、字符串搜索命令grep、帮助命令man)

     1.文件搜索命令:locate [文件名]    在后台数据库中按文件名搜索,搜索速度比find快,耗费资源更少    例子:locate test.txt,就会显示文件名包含 test.txt的所 ...

  7. linux常用命令之查阅文件

    CAT cat – concatenate print files 连续的输出文件内容 用法 cat [-nbA] file 选项 -n line number 输出行号 -b line number ...

  8. Linux常用命令_(文件权限)

    Linux权限管理: 二.权限管理1.3种基本权限在Linux中,将使用系统资源的人员分为4类:超级用户.文件或目录的属主.属主的同组人和其他人员.超级用户拥有对Linux系统一切操作权限,对 于其他 ...

  9. Linux常用命令:修改文件权限chmod 754/744

    常用命令:chmod 777  文件或目录 chmod  777 /etc/squid 运行命令后,squid文件夹(目录)的权限就被修改为777(可读可写可执行). Linux系统中,每个用户的角色 ...

随机推荐

  1. arcgis api 4.x for js 结合 Echarts4 实现散点图效果(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 4.x for js:esri 官网 api,里面详细的介绍 arcgis api 4.x 各个类 ...

  2. 从0系统学Android--3.2四种基本布局

    从0系统学Android--3.2四种基本布局 本系列文章目录:更多精品文章分类 本系列持续更新中.... 3.3 系统控件不够用?创建自定义控件 上一节我们学习了 Android 中的一些常用的控件 ...

  3. 推荐一个好用的行内可编辑的table组件 vxe-table

    项目中有一个需要用户点击table单元格可编辑的需求,由于博主用的是elementUI,element组件内实现可编辑,用过的小伙伴都知道,非常麻烦,后来博主在浏览组件的时候发现了 一款非常好用的ta ...

  4. ORA-16032和ORA-07286 LOG_ARCHIVE_DEST_1没生效

    主备切换在备库startup时出现归档路径没写到spfile里...注意:修改参数时最好带上scope=spfile或scope=both,以免重启出现异常.SQL> startup mount ...

  5. bayaim——达梦数据库 导入导出

    导出: E:\dmdbms\bin\dexp.exe """SYSDBA"""/"""******" ...

  6. 基于django的个人博客网站建立(五)

    基于django的个人博客网站建立(五) 前言 网站效果可点击这里访问 之前鸽了两天,今天继续再写点 主要内容 今天加了个展示照片的功能,就叫他生活记录吧 先建表 class Record(model ...

  7. acwing 850. Dijkstra求最短路 II 模板

    地址 https://www.acwing.com/problem/content/description/852/ 给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为非负值. 请你求 ...

  8. Vue 小练习01

    有红, 黄, 蓝三个按钮, 以及一个200X200px的矩形box, 点击不同的按钮, box的颜色会被切换为指定的颜色 <!DOCTYPE html> <html lang=&qu ...

  9. C++笔记——快读快写

    直接开始吧 额m~,这里就没什么好说的了,无非就是用getchar加快cin或printf的读入速度. 代码: inline int read() { int X=0; bool flag = 1; ...

  10. Linux系统文件属性知识

    ---------------------------------------------------------------------------------------------------- ...