find

基本形式

find base_path
base_path可以是任何目录,find会从该目录开始往下寻找
find . -print
列出当前目录下所有的文件和目录,以'\n'作为分隔符
find . -print0
列出当前目录下所有的文件和目录,以'\0'作为分隔符

根据文件名和正则表达式匹配搜索

搜索文件名

find /home -name "*.txt" -print
打印/home目录下的txt文件,-name匹配文件名

find /home -iname "example*" -print
打印/home目录下的文件名包含example的文件,其中example不区分大小写,-iname不区分大小写匹配文件名

find /home \( -name "*txt" -o -name "*pdf" \) -print
打印home目录下txt或者pdf文件(注意上面"(" 和 "-name"之间有一个空格,")"与前面一个字符也一样),-o表示匹配多个条件中的一个,OR的关系

搜索文件路径

find /home -path "*java*" -print
打印home目录下文件路径中包含java的文件,-path使用通配符匹配文件或者路径

find /home -regex ".*\(\.py|\.sh\)$"
上面正则表达式的含义:"."任意字符,星号匹配前面表达式任意多次,后面"()"使用 ""转义,表示括弧内是一个整体,"$"表示以括弧内的内容为结束
-regex和-path都是匹配文件或者路径,但是path是使用通配符,regex使用正则表达式,regex 与 iregex类似 name 与 iname,表示不区分大小写

否定参数

find 使用 ! 表示否定含义

find /home ! -name "*.txt" -print
打印home下所有不是txt的文件

基于目录深度的搜索

find可以遍历指定目录的所有子目录,使用-maxdepth,-mindepth 指定遍历目录的深度

find /home -maxdepth 2 -name "*.txt" -print
打印home下目录深度小于等于2的文件,-maxdepth表示文件目录深度距离当前目录最大为2

注意指定目录深度的参数尽量放在前面,可以提高find的效率

根据文件类型搜索

find . -type d -print
打印当前目录下的目录,不包括文件

type参数表示的文件类型

  • f: 普通文件
  • l: 符号链接
  • d: 目录
  • c: 字符设备
  • b: 块设备
  • s: 套接字
  • p: 管道(fifo)

根据文件时间进行搜索

unix文件有三种时间戳,但是没有创建时间的概念

  • 访问时间(atime):用户最近一次访问文件的时间
  • 修改时间(mtime):文件内容被修改的时间
  • 变化时间(ctime):文件元数据(权限等)最近一次被修改的时间

find 以天为单位的时间参数:-atimr, -mtime, -ctime
以分钟为单位的时间参数: -amin, -mmin, -cmin
后面的参数以整数值给出,"+" 表示大于,"-"表示小于

find . -type f -atime -7 -print
打印七天内(时间范围1-7天)被访问过的文件

find . -type f -atime 7 -print
打印访问时间前7天(往回数第七天,时间范围是一天)的文件

find . -type f -atime +7 -print
打印七天前(时间范围:是要大于七天)被修改过的文件

相对比较
find . -type f -newer file.txt -print
打印比file.txt修改时间更近的文件

基于文件大小的搜索

find . -type f -size +2k
打印文件大小超过2k的文件

find . -type f -size -2k
打印小于2k的文件

find . -type f -size 2k
打印等于2k的文件

可以使用的单位

  • b:块,512字节
  • c:字节,8位
  • w:字,两个字节
  • k:千字节
  • M:兆字节
  • G:吉字节

删除匹配文件

find . -type f -name "*.swp" -delete
删除所有swp文件,-delete表示删除匹配到的文件

基于文件权限和所有权的匹配

find . -type f -perm 644 -print
打印权限为644 的文件

find . -type f -name "*.php" ! -perm 644 -print
打印所有php文件权限不是644的文件

结合find执行命令或动作

find . -type f -user root -exec chown lack {} \;
把当前目录下root用户的文件修改为lack用户的文件,{}会替换为find匹配到的每一个文件名,-user表示文件所有者,-exec用于执行命令或这动作,用";"结尾,""用来转义

让find跳过特定的目录

find . \( -name ".git" -prune \) -o \( -type f -print \)
打印除了.git目录下的所有文件,-prune 排除指定的目录,注意括弧前后的空格

linux 命令 — find的更多相关文章

  1. Linux实战教学笔记04:Linux命令基础

    第四节:Linux命令基础 标签(空格分隔):Linux实战教学笔记 第1章 认识操作环境 root:当前登陆的用户名 @分隔符 chensiqi:主机名 -:当前路径位置 用户的提示符 1.1 Li ...

  2. 像黑客一样使用 Linux 命令行

    前言 之前在博客园看到一篇介绍 IntelliJ IDEA 配置的文章,它里面用的是 gif 动态图片进行展示,我觉得很不错.所以在我今天以及以后的博文中,我也会尽量使用 gif 动图进行展示.制作 ...

  3. 11 个很少人知道但很有用的 Linux 命令

    Linux命令行吸引了大多数Linux爱好者.一个正常的Linux用户一般掌握大约50-60个命令来处理每日的任务.Linux命令和它们的转换对于Linux用户.Shell脚本程序员和管理员来说是最有 ...

  4. Linux命令随笔

    Linux命令总结 man ==命令帮助; help ==命令的帮助(bash的内置命令); ls ==list,查看目录列表; -ld:查看目录权限; -l:(long)长格式显示属性; -F:给不 ...

  5. linux命令在线手册

    下面几个网址有一些 Linux命令的在线手册,而且还是中文的,还可以搜索.非常方便 Linux命令手册 Linux命令大全 Linux中文man在线手册 每日一linux命令

  6. 常用的一些linux命令

    最近接触到一些linux环境部署的事情,下面分享一些最近使用的比较频繁的一些linux命令~ 1.一次性移动多个文件到一个文件夹里 mv  被移动文件名 -t 目标文件夹 如:mv a.txt b.t ...

  7. 测试或运维工作过程中最常用的几个linux命令?

     大家在测试工作过程中,可能会遇到需要你去服务器修改一些配置文件,譬如说某个字段的值是1 则关联老版本,是0则关联新版本,这时候你可能就需要会下vi的命令操作:或者查看session设置的时长,可能需 ...

  8. 每天一个 Linux 命令(21):find命令之xargs

    在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出 ...

  9. 在windows下使用linux命令,GnuWin32的使用.

    http://sourceforge.net/projects/getgnuwin32 使用过linxu的伙计估计都会喜欢上linux各种各样强大的命令如:grep, sed,awk,diff和pat ...

  10. 我常用的那些linux命令

    我常用的那些linux命令 用linux也有些年头了,说来也忏愧,说是有些年头了,其实也还是个不长进的主.记得第一次接触linux是boss跟我说的怎么操作,什么编辑模式,按i,a,o进入编辑模式.在 ...

随机推荐

  1. KIDS采购销售管理系统

    {KIDS采购销售管理系统} 软件项目总结报告 编号:-{kpss}-CLOSUREREPORT 版本:1.0 变更记录 1 项目信息 2 项目说明 [本项目主要用于母婴店人事管理,采购管理,商品管理 ...

  2. Linux下安装numpy

    转自:https://blog.csdn.net/abc_321a/article/details/82056019 1.下载源码包 ,命令如下 wget http://jaist.dl.source ...

  3. Redis sentinel之集群搭建

    环境 由于不太熟悉docker,所以,把docker当虚拟机来用,服务器环境如下: Redis Server 环境搭建 Redis Server 01 搭建 并且制作Redis镜像 容器建立 # do ...

  4. PHP引用(&)练习

    <?php class talker { private $data = 'Hi'; public function & get(){ //返回值指向一个内容,这里是指向$data的内容 ...

  5. Python mayavi库及mayavi管线

    Mayavi库的基本元素Mayavi库中主要有两大部分功能 一类是用于处理图形可视化和图形操作的mlab模块 一类是操作管线对象窗口对象的apimlab包含 绘图函数:实现已有的数据进行可视化显示,可 ...

  6. 继承Thread类和实现Runnable接口

    一.采用继承Thread类方法的特点: 优势:编写简单,如果需要访问当前的线程,只需要使用this,并可以在run()方法中调用其他线程的方法: 劣势:线程已经继承了Thread类,不能继承其他的父类 ...

  7. 关于 this 关键字的使用

    package com.jsti.guiyang_01; /* 自定义Phone类 this关键字 代表当前正在调用这个方法(访问成员变量)的对象(实例) 1.在setxxx方法中用来区分成员变量和局 ...

  8. 《高质量C++&C 编程指南》学习笔记

    这本电子书是在国科大上课时候,老师在课件资源里边提供的.之所以会重视这个文件,是因为本科时候,有个老师提到过:那个学生遍的代码很整齐,看起来让人舒服,我就知道工大留不下他.因此,我就格外注意这件事,但 ...

  9. Python之旅Day7 面向对象&异常处理

    ########################################面向对象初识######################################### 面向对象简介 面向对象编 ...

  10. Python学习笔记-基础1

    一 初识Python python是一种面向对象.解释型的计算机程序语言.Python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特 ...