本文只总结一些常用的用法,更详细的说明见man findinfo find

find命令

find命令常用来查找文件或目录,可以根据给定的路径和表达式查找所需的文件或目录。该工具是由findutils包提供的。

原理

find是从左向右的顺序处理多个expression,因此expression的前后顺序不同会造成不同的搜索性能差距。

find的搜索机制是根据expression返回的true/false决定的,每搜索一次都会判断一次,只有评估的最终结果为true才算是找到,并切入到下一个搜索点。

语法格式

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
  • 默认path为当前路径,若服务器负载较高,尽量不要在高峰期使用find命令
  • 默认actions是-print

expression

expression分为三种:options、test、action。对于多个表达式,find是从左向右处理的,所以表达式的前后顺序不同会造成不同的搜索性能差距。

test

find解析完语法之后,开始搜索文件,在搜索过程中,检测到的文件都会被test expression进行测试,符合条件的将被保留下来。

参数 说明
-name 按名称查找
-size 按大小查找
-user 按文件属主查找
-type 按类型查找
-mtime 按照文件的更改时间查找
-atime 按照文件的访问时间查找
-perm 按照文件权限查找
-regex 按照正则表达查找

大多数情况下,-name足以解决许多问题,碰到复杂的情况,可以使用正则-regex

需要注意的是-regex不是匹配文件名,而是匹配完整的文件名(包括路径)

action

actions部分一般都是执行某些命令,或实现某些功能。

参数 说明
-delete 删除文件
-exec command ; -exec 参数后面跟的是 command命令,它的终止是以“;”为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠
-ok command ; 类似于-exec,但在执行命令前会交互式进行询问,如果不同意,则不执行命令并返回false,如果同意,则执行命令,但执行的命令是从/dev/null读取输入的

简单实例

使用-name参数查看/etc目录下面所有的.conf结尾的配置文件:

find /etc -name '*.conf'

使用-size参数查看/etc目录下面大于2M的文件:

find /etc -size +2M

搜索当前目录下七天内被访问过的所有文件:

find . -type f -atime -7

找出/var/log下不是以.log结尾的文件:

find /var/log/ -type f ! -name '*.log'

找出/opt/logs下包含ab2019-05并以.log结尾的文件:

find /opt/logs/ -regex '.*ab.*2019-05.*.log'

查看当前目录所有文件的属性:

find . -type f -exec ls -l { } \;

找到/opt/logs下7天以前的日志文件并删除它们:

# 方法一
find /opt/logs -name '*.log' -mtime +7 -exec rm -rf {} \; # 方法二
find /opt/logs -name '*.log' -mtime +7 -delete # 方法三
find /opt/logs -name '*.log' -mtime +7 -ok rm -rf {} \;

在生产环境人工执行命令时,尽量使用-ok方式删除文件。

Linux基础:find命令总结的更多相关文章

  1. Linux学习笔记(9)linux网络管理与配置之一——Linux基础网络命令与学习大纲(0)

    大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配置DNS客户端 4.配置名称解析顺序 5.配置路由与默认网关 6.双网卡绑定 [1] ping [2]net ...

  2. Linux基础入门级命令文档

    Linux系统上命令的使用格式,及常用命令示例 1.命令提示符 登录系统后,第一眼看到的内容是: [root@node01 ~]# 上图就是 Linux 系统的命令提示符.那么,这个提示符的含义是什么 ...

  3. Linux基础-常用命令

    常用的压缩命令 一.tar 1.压缩:tar zcvf [压缩包名].tar.gz [待压缩的文件名 ... ] 2.解压缩:tar zxvf [压缩包名].tar.gz -C [指定的解压目录] 3 ...

  4. (大数据工程师学习路径)第一步 Linux 基础入门----命令执行顺序控制与管道

    介绍 顺序执行.选择执行.管道.cut 命令.grep 命令.wc 命令.sort 命令等,高效率使用 Linux 的技巧. 一.命令执行顺序的控制 1.顺序执行多条命令 通常情况下,我们每次只能在终 ...

  5. Linux 权限、磁盘操作命令-Linux基础环境命令学习笔记

    1.创建用户和用户组 1)用户和用户组 /etc/passwd 保存系统用户的基本信息 /etc/group 保存用户组信息 用户名:x:UID:GID 2)基本命令 useradd 增加用户 gro ...

  6. Linux基础常用命令

    Linux 下命令有很多,并且很多命令用法又有不同的选项,这里介绍一些常用的最基本的Linux命令的用法,希望给大家留下便利之处. 1.cd 切换目录.例如 cd /home 可切换到home目录,  ...

  7. Linux基础之命令练习Day7-nginx,nfs

    一. Nginx Nginx("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗 ...

  8. Linux基础之命令练习Day4-fdisk,mkfs,mlabel,mount,umount,mkswap,swapon,dd,top,free,ps,kill,rpm,yum,make

    一. 硬盘分区.格式化及文件系统的管理 1. 在Linux系统中,一切皆文件.每个设备都被当作一个文件来对待. 常见的存储设备在Linux系统中的文件名如下表所示: 2. 对硬盘进行分区有以下优点: ...

  9. Linux基础之命令练习Day3-文件管理:cat,tar,gzip,vim,ln

    一. 文件合并 cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 1.命令格式: cat [ ...

  10. Linux基础之命令练习Day1-init,who,date,cal,man,clear,passwd,su,whoami,mkdir,touch,rm,cp,mv,head,tail,more,less,echo

    开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语 使用快捷键切换到虚拟终端2,使用普通用户身份登录,查看系统提示符 使用命令退出虚拟终端2上登录的用户 使用快捷键切 ...

随机推荐

  1. maven 的plugin 的使用

    mvn [plugin-name]:[goal-name] mvn compiler:compile 这里写的十分详细: https://www.tutorialspoint.com/maven/ma ...

  2. Flash-制作空心文字

    常常看到站点上用很多空心文字作为站点的名称或者特色项目的名称等等,那这些空心文字是怎么做出来的呢? 用Flash事实上非常快就能做出来.过程例如以下: (1)新建空白文件.工具箱中选择"文本 ...

  3. 翻翻git之---溜的飞起的载入效果AVLoadingIndicatorView

    转载请注明出处:王亟亟的大牛之路 由于接近过春节.看各个群体的工作都不太旺盛(不是年会就是各种吹B或是放空). 之前的Material Design的内容差点儿讲的差点儿相同了(至少基本的几个控件都介 ...

  4. 关于ajax技术

    传统注册存在的弊端 : 当我们点击注册时,会存在以下几个问题. 首先,浏览器会销毁当前页面,如果注册失败返回的新页面所有之前 填写的数据丢失. 其次,如果网络通信较差,我们表单提交请求数据到服务端,而 ...

  5. 关于api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案

    关于api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案 目录 关于api-ms-win-crt-runtimel1-1-0dll缺失的解决方案 目录 安装VC redite ...

  6. Java-JRE:JRE百科

    ylbtech-Java-JRE:JRE百科 JRE是Java Runtime Environment缩写,指Java运行环境,是Sun的产品.运行JAVA程序所必须的环境的集合,包含JVM标准实现及 ...

  7. 最新昆石VOS2009/VOS3000手机号段导入文件(手机归属地)

    使用2017年4月最新版手机号段归属地制作,支持所有版本的VOS 共360569条记录,兼容所有版本的昆石VOS,包括VOS2009.vos3000.vos5000 导入比较简单.下载后解压到桌面在V ...

  8. Sequence(优先队列)

    http://poj.org/problem?id=2442 题意:给你n*m的矩阵,然后每行取一个元素,组成一个包含n个元素的序列,一共有n^m种序列, 让你求出序列和最小的前n个序列的序列和. # ...

  9. [Apple开发者帐户帮助]五、管理标识符(5)创建一个iCloud容器

    您必须拥有一个或多个iCloud容器才能启用iCloud. 所需角色:帐户持有人或管理员. 在“ 证书”,“标识符和配置文件”中,从左侧的弹出菜单中选择操作系统. 在“标识符”下,选择“iCloud容 ...

  10. # 深入理解Redis(二)——内存管理的建议与技巧

    引语 随着使用Redis的深入,我们不可避免的需要深入了解优化Redis的内存,本章将重点讲解Redis的内存优化之道,同时推荐大家阅读memory-optimization一文. 想要高效的使用Re ...