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. mongodb主备配置

    前言:mongodb目前推荐的方式是副本集的方式实现,但是副本集需要三台服务器,目前配置为主备方式 假设你已经安装好了mongo,并配置好了响应的用户 下面修改mongodb.conf配置文件,开启认 ...

  2. partition by 与ROW_NUMBER()函数使用详解

    SQL Server数据库partition by 与ROW_NUMBER()函数使用详解 关于SQL的partition by 字段的一些用法心得 先看例子: if object_id('TESTD ...

  3. 关于css里决定样式优先级的权重

    最近学css样式,优先级有点繁琐,简单记录一下. css中的优先级规则为: 有!important的最优先: 其次权重高的优先: 权重相同则后定义优先,会覆盖前面的. 至于权重: #id 为100: ...

  4. [考试反思]1113csp-s模拟测试113:一念

    在这么考下去可以去混女队了2333 两天总分rank14,退役稳稳的 的确就是没状态.满脑子都是<包围保卫王国>ddp/LCT/ST,没好好考试. 我太菜了写题也写不出来考试也考不好(显然 ...

  5. 2019年跨越速递Java工程师笔试题

    1.下面哪个选项可以用于JSP页面之间传递对象(A C) A application B page C session D error  E response 评语:这道题考察的是对JSP内置对象的了 ...

  6. idea中导入别人的vue项目并运行

    1. 下载node.js 在搭建vue的开发环境之前,先下载node.js,下载地址:https://nodejs.org/en/ https://blog.csdn.net/antma/articl ...

  7. ArrayList和LinkedList介绍

    java.util.ArrayList集合的数据存储结构是数组,且是多线程,元素增删慢,查找快, 由于日常使用开发大多数为查询数据,遍历数据,所以ArrayList是最常用的集合.上一节已写了. ja ...

  8. 【Unity游戏开发】性能优化之在真机上开启DeepProfile与踩坑

    一.引子 最近马三入职了新公司,平时除了负责编辑器开发之外还要做一些游戏性能优化方面的工作.在这里首先给大家安利一下Unity官方的性能测试分析工具URP ,这个工具目前是免费,测试的过程中也不需要接 ...

  9. Java描述设计模式(05):原型模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.原型模式简介 1.基础概念 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出 ...

  10. java基础(2):注释、关键字、标识符、数据

    1. 注释.关键字与标识符 大家可以安装一个文本编辑软件notepad++,有利于java代码的查看与编写. 1.1 程序注释 通常我们需要在源代码中添加文字用来对进行代码解释说明,但这些文字并不是J ...