008 Linux 文件查找 find

Linux 系统,find 毫无疑问是最强的文件查找工具。find 一般会与其他命令结合,将查找到的结果作为参数传入到后置命令中,进行删除、统计、复制迁移等操作。

  • find / -name ‘hello.txt’ #从根目录下开始查找文件 hello.txt;
  • find . -iname ‘hello.txt’ #从当前目录下开始查找文件 hello.txt,-iname 会忽略大小写;
  • find . -name ‘*hello.txt’ #当前目录下,查找目标名称后缀为 “hello.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 /etc ! -type f #查找 /etc 目录下不是普通文件的文件,”!”:感叹号,取反;

  • atime:访问时间(access time),指的是文件最后被读取的时间,可以使用touch命令更改为当前时间;

  • ctime:变更时间(change time),指的是文件本身最后被变更的时间,变更动作可以使chmod、chgrp、mv等等;
  • mtime:修改时间(modify time),指的是文件内容最后被修改的时间,修改动作可以使echo重定向、vi等等;

  • find . -type f -mtime -30 #查找当前目录下30天之内修改过的文件;

  • find /var/log/ -mtime +30 -name ‘*.log’ # 查找指定目录/var/log/ 下30天以前被修改的log类型文件;
  • find /etc -maxdepth 1 ! -type l -mtime -30 #查找/etc 第一层目录下不是符号链接文件的文件,并在30天内被修改过,-maxdepth :指定目录层级,-maxdepth 1代表第1层,-maxdepth 2代表延伸到第二层;

用wc -l来统计下log数量,再进行删除。
find . -name ‘*.log’ -mtime +30 | wc -l #从当前目录下开始搜索30天之前的log文件,并统计数量, “|”: 管道符,将前面查到的数据作为输入源给后面的命令;

find . -name ‘*.log’ -mtime +30 -exec rm {} ; #查找当前目录下30天以前的log文件,使用-exec加rm将其删除;exec命令以分号结束’;’,该分号前面要放反斜杠转义 。

find . -name ‘*.log’ -mtime +30 -ok rm {} ; #查找当前目录下30天以前的log文件,-ok : 询问删除,y删除,n不删除,回车默认不删除;命令以分号结束’;’, 该分号前面要放反斜杠转义 。

find . -name ‘*.log’ -mtime +30 -print0 | xargs -0 rm -f # xargs : 命令传递参数过滤器,与管道符 “|” 一同使用,将前面的命令传递给后面的命令使用;

  • find . -name ‘*.log’ -mtime +10 -print0 | xargs -0 rm -f #保险的方式删除,推荐这样使用
  • find / -name ‘*.log’ -mtime +30 | xargs ls -l #对于30天前的log文件进行详情查看,利用xargs + ls -l 命令来进行文件的详细属性查看;
  • find / -name ‘*.log’ -mtime +30 | xargs -i mv {} /logback #将30天前的所有log文件移动到 /logback 文件夹下,xargs -i + {},将前面查找到的文件都作为参数给mv命令执行;

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

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

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

  • xargs,处理特殊的文件名(例如文件名有空格)需要采用特殊的处理方式(find . -name “*.log” -print0| xargs -0 ls -l)。

查找超过500M大小文件,并显示查找出来文件的具体大小,且按照大小排序。

  • find . -type f -size +500M -print0 | xargs -0 du -h | sort -nr
  • find . -name ‘*.log’ -size +500M -print0 | xargs -0 du -h | sort -nr

find 命令是查找文件神器,可按文件名、类型查找过滤;按时间范围查找过滤;同时组合其他命令使用,可大大提高操作效率。

「不甩锅的码农」原创,转载请注明来源,未经授权禁止商业用途!同名 GZH 请关注!

Original: https://www.cnblogs.com/bilahepan/p/15853606.html
Author: 不甩锅的码农
Title: 008 Linux 文件查找 find

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/524128/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • gitlab拉取指定目录

    1.新建目录 mkdir git 2.初始化本地目录 git init 3.启用过滤的配置项 git config core.sparsecheckout true 4.想要拉取哪…

    Linux 2023年6月6日
    072
  • 博客园排名预测

    前言 之前写过一篇绘制博客园积分与排名趋势图的文章——《查看博客园积分与排名趋势图的工具》,使用那篇文章介绍的工具,可以通过趋势图直观的看出排名前进的走势。但是如果想看看自己积分达…

    Linux 2023年6月6日
    082
  • 【原创】Linux虚拟化KVM-Qemu分析(六)之中断虚拟化

    背景 Read the fucking source code! –By 鲁迅 A picture is worth a thousand words. –…

    Linux 2023年6月8日
    095
  • uniapp使用阿里云矢量图标库,h5端显示正常,真机app不显示问题解决

    1、在阿里云矢量图标库网站管理界面如上图,首先下载至本地1的位置,然后在2的位置复制代码 2、在下图中static目录下放入下载的iconfont.css文件,并且修改里面的链接,…

    Linux 2023年6月7日
    076
  • 面试题:Java序列化与反序列化

    序列化和反序列化的概念 应用场景? 序列化实现的方式 继承Serializable接口,普通序列化 继承Externalizable接口,强制自定义序列化 serialVersio…

    Linux 2023年6月6日
    0108
  • Power Outage

    由于Covid-19的原因一直是work from home, 在几天前家里的电表有问题需要人来维修,在这期间会停电大概半小时操作,虽然是wfh,但是还是要保障工作的正常进行,保守…

    Linux 2023年6月7日
    099
  • 如何正确地使用Entity Framework Database First

    毕设依旧在不紧不慢地以每天解决一个问题的进度进行中。今天遇到的问题就是在建立数据模型时遇到的。因为项目是基于数据库构建的,所以理所应当地采用DB First来构造实体类和DbCon…

    Linux 2023年6月14日
    088
  • Windows Server 新增磁盘处于脱机状态解决办法

    解决方案: Cmd命令行操作如下: 1,进入diskpart模式 2、列出磁盘情况 3、选择脱机的磁盘 4、联机磁盘 5、清除磁盘属性 6、进入磁盘管理,提示初始化 每天记录一点,…

    Linux 2023年6月8日
    092
  • 【EventOS Nano】EventOS Nano使用快速入门

    快速入门 EventOS Nano非常简单,除源码外,只需要实现三个代码,就可以使用EventOS Nano编写程序 main.c main函数,初始化和启动EventOS eos…

    Linux 2023年6月13日
    079
  • 网络设备配置–6、通过RIP协议配置动态路由

    一、前言 同系列前几篇:网络设备配置–1、配置交换机enable、console、telnet密码网络设备配置–2、通过交换机划分vlan网络设备配置&#8…

    Linux 2023年6月8日
    087
  • 面试之Java String 编码相关

    另有一篇我的字符编码本质入门的文章见这里:https://www.cnblogs.com/uncleguo/p/16008551.html 实话说,作为一个多年Java老年程序员,…

    Linux 2023年6月13日
    0102
  • CentOS 6 安装并配置 MySQL 5.6

    1. 添加 MySQL Yum 存储库 将MySQL Yum存储库添加到系统的存储库列表中; 1.1 到MySQL官网下载MySQL Yum存储库(https://dev.mysq…

    Linux 2023年6月13日
    075
  • GCC常见命令

    rwx 对于目录和文件的区别 文件 目录 r 文件的内容可以被查看。支持cat、more、head…vim 目录的内容可以被查看。ls、tree w 文件的内容可以被添…

    Linux 2023年6月6日
    0102
  • LeetCode-补充题9. 36进制加法

    题目来源 题目详情 36进制由0-9,a-z,共36个字符表示。 要求按照加法规则计算出任意两个36进制正整数的和,如1b + 2x = 48 (解释:47+105=152) 要求…

    Linux 2023年6月7日
    087
  • 项目的部署和环境搭建

    项目的部署和环境搭建 cd /opt (一般项目部署的文件代码都放在/opt目录下) 3.进入项目跟目录下的docker目录: cd crm _pro/docker 4.执行doc…

    Linux 2023年6月7日
    075
  • macos 文件系统 git仓库 大小写敏感设置; git config core.ignorecase

    macos 的文件系统不区分文件名的大小写,这样会导致在一个文件夹,当修改一个文件名为大写的时候,git不能感知到。这样使用过程中会出现很多不必要的麻烦。之前设置过,最近使用,发现…

    Linux 2023年6月14日
    090
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球