find - search for files in a directory hierarchy

find命令用来在指定目录下查找文件。

任何位于参数之前的字符串都将被视为欲查找的目录名。

如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法:
  find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

参数:

  • -type 文件类型:

    • 文件f(file),
    • 目录d(directory),
    • 字符串c(character),
    • 块b(block),
    • s(socket),
    • l(link)符号链接
  • -name 按名字查找 后接“文件名”,支持正则表达式和通配符
  • -mtime 按照文件的mtime修改时间查找文件(modify),文件内容被修改的最后时间
  • -atime 访问时间(access),文件中的数据库最后被访问的时间
  • -ctime 变化时间(change),文件内容被修改的最后时间
  • ! 取反
    • find . -type f ! -name 'file.txt' 不是名字叫file.txt的所有文件
  • -perm 644,755 权限查找
  • -size n 文件大小
    • find . -size +10k 大于10k的文件
    • 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组
  • -exec   执行命令
    • find /data -type f -name 'a.txt' -exec rm {} \;
    • 在指定目录/data下面查找类型为文件file,名称为a.txt的文件,将find找到的内容给到{}中,执行删除命令。

示例:

删除找到的文件

[root@oldboy data]# echo test >a.txt
[root@oldboy data]# ls
a.txt oldboy.txt
[root@oldboy data]# find /data -type f -name 'a.txt' -exec rm {} \;
[root@oldboy data]# ls
oldboy.txt
[root@oldboy data]# find /data -type f -name 'oldboy.txt' -exec rm {} \;
[root@oldboy data]# ls

批量创建1-10的.txt文件,通过查找命令将找到的所有.txt文件通过管道符交给xargs命令,将所有文件放在一行,再由rm -f强制删除。

[root@oldboy data]# touch {1..10}.txt
[root@oldboy data]# ls
10.txt 2.txt 4.txt 6.txt 8.txt
1.txt 3.txt 5.txt 7.txt 9.txt
[root@oldboy data]# find /data -type f -name '*.txt' |xargs
/data/2.txt /data/5.txt /data/3.txt /data/9.txt /data/7.txt
/data/1.txt /data/4.txt /data/10.txt /data/8.txt /data/6.txt
[root@oldboy data]# find /data -type f -name '*.txt' |xargs rm -f
[root@oldboy data]# ls

在脚本中删除文件或目录时,**生产环境**的使用方法一般为:

  • 和xargs搭配用法

    • 删除在/logs目录下,修改时间在15天以前的'.log'文件

      • find /logs -type f -name '\*.log' -mtime +15 |xargs rm -f
    • 删除在/logs目录下,以oldboy结尾的修改时间再30天以前的目录
      • find /logs-type d -name '\*oldboy' -mtime +30 |xargs rm -rf
  • 使用find的-exec
    • 在/logs目录中查找更改时间在5日以前的文件并删除它们

      • find /logs -type f -name '\*.log' -mtime +5 -exec rm {} \;

  • -mtime 按修改时间查找modify time

    • +7 代表7天以前[很久以前,截止到7天以前)
    • 7 代表最近的第7天当天
    • -7 代表最近7天(7天,今天now)

重要提示:find命令是生产环境中极重要的一个命令,要精通才好

【Linux常见命令】find命令的更多相关文章

  1. Linux常见目录及命令介绍

    一.Linux中常用的目录介绍:     /        -根目录     /bin    -命令保存目录(普通用户亦可读取的命令)     /boot    -启动目录,启动相关文件     /d ...

  2. linux 常见名词及命令(三)

    tar 用于对文件打包压缩或解压. 示例: 打包并压缩文件:tar -czvf 压缩包名.tar.gz 文件名 解压并展开压缩包:tar -zxvf 压缩包名.tar.gz -c 创建压缩文件 -x ...

  3. 性能工具之linux常见日志统计分析命令

    引言 我前几天写过的性能工具之linux三剑客awk.grep.sed详解,我们已经详细介绍 linux 三剑客的基本使用,接下来我们看看具体在性能测试领域的运用,本文主要介绍的是在 Tomcat 和 ...

  4. linux 常见名词及命令(一)

    linux  PK  wondows 稳定且有效率.免费或少许费用.漏洞少且修补快.多任务多用户. 安全的用户及文件权限策略.适合小内核程序的嵌入系统.相对不耗资源. 热门的开源系统 红帽企业系统(R ...

  5. linux 常见名词及命令(五)

    计划任务服务之一次性任务: at <时间> 安排一次性任务 atq 或at -l 查看任务列表 at -c 序号 预览任务与设置环境 atrm 序号 删除任务 安排任务示例: 在23:30 ...

  6. Linux常见的Shell命令

    1.具体的shell命令用法可以通过help或man命令进入手册来查询其具体的用法.2.终端本质上对应着linux上的/dev/tty设备,linux的多用户登录就是通过不同的/dev/tty设备完成 ...

  7. linux 常见名词及命令(六)

    查看软件安装位置 : dpkg -L 软件包名字 ubuntu环境的apache相关命令: 查看是否启动:ps -aux | grep httpd  或者 netstat -an | grep :80 ...

  8. linux 常见名词及命令(四)

    yum仓库的配置 yum仓库的配置文件存放在/etc/yum.repos.d/目录中. 第一步:切换到/etc/yum.repos.d/目录中. 第二步:使用vim编辑器打开一个名为'rhel7.re ...

  9. linux 常见名词及命令(二)

    pwd 用于显示当前的工作目录. cd 用于切换工作路径 cd - 切换到上一次的目录 cd ~ 切换到家目录 cd ~username 切换到其他用户的家目录 cd .. 切换到上级目录 ls 用于 ...

  10. Linux下的常见压缩解压缩命令

    Linux常见压缩解压缩命令 常见压缩文件扩展名 .Z compress 程序压缩的文件: .zip zip 程序压缩的文件: .gz gzip 程序压缩的文件: .bz2 bzip2 程序压缩的文件 ...

随机推荐

  1. Java 程序该怎么优化?(技巧篇)

    搬砖者:为什么程序总是那么慢?它现在到底在干什么?时间都花到哪里去了? 面试官:简单谈谈 Java 程序性能优化? 1. 字符串处理优化,乃优化之源. 研发过程中,String 的 API 用的应该是 ...

  2. [原创] 关于步科eview人机界面HMI的使用 - HMI做Slave - Modbus RS485通讯

    做测试设备,或者自动化设备常常用到HMI 触摸屏 我有个案子用到了 步科的eview 触摸屏 型号 ET070 我的是单片机主板 控制 HMI显示,通讯用485  MODBUS 单片机板充当 主控 , ...

  3. ALPN(Application Layer Protocol Negotiation)

    ALPN (Application Layer Protocol Negotiation)是TLS的扩展,允许在安全连接的基础上进行应用层协议的协商.ALPN支持任意应用层协议的协商,目前应用最多是H ...

  4. redis持久化(RDB、AOF、混合持久化)

    redis持久化(RDB.AOF.混合持久化) 1. RDB快照(snapshot) 在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中. 你可以对 Redis ...

  5. Spring(三):bean的自动装配

    Bean的自动装配 自动装配是Spring满足bean依赖的一种方式. Spring会在上下文中自动寻找,并自动给bean装配属性 Spring中三种装配方式 在xml中显式的配置. 在java中显式 ...

  6. 会 python 的一定会爬虫吗,来看看

    文章更新于:2020-02-18 注:python 爬虫当然要安装 python,如何安装参见:python 的安装使用和基本语法 一.什么是网络爬虫 网络爬虫就是用代码模拟人类去访问网站以获取我们想 ...

  7. cmd批处理转义字符%的详细解释

    cmd批处理转义字符%的详细解释 在命令行中使用for时不需要双%,这源于命令解释器对命令行与批处理的处理方式不同. 1.%是个ESCAPE字符,通常将之译为转义字符,但也有更形象的译名脱逸字符.逃逸 ...

  8. Davor COCI 2018

    当题目中有多组解,但要某值最大,该怎么办? 本文为博客园ShyButHandsome的原创作品,转载请注明出处 题目描述 After successfully conquering the South ...

  9. 常见DL网络模型参数

  10. ASE课程总结 by 林建平

    设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的辅助用户在阅读英文文献时记忆生词,提高用户的生词量,减少用户的阅读障碍.定义非常清晰,要有查 ...