查找的动作在平时使用的频率也还是很高的,所以知道并用好 find 这个命令也很重要。find 命令顾名思义,就是搜索特定文件夹内的文件。

基本使用

最基本的使用

find [path] [expression]

在 path 目录下查找 expression 的文件。

使用举例

通过文件名查找

find -name "query"   # 搜索文件名,大小写敏感
find -iname "query" # 大小写不敏感
find -not -name "query" # 查找不包含关键字的文件
find \! -name "query" # 不包含

按照类型查找文件

find -type [fdlcb] "query"

type 后能够使用的类型有

  • f 常规文件
  • d 目录
  • l 连接
  • c character devices
  • b block devices

比如要查找系统中所有以 .conf 结尾的文件

find / -type f -name "*.conf"

通过文件大小查找

find /path/to/folder -size 50M

查找 50M 的文件,size 后能够使用的单位有:

  • b 512byte blocks
  • c byte 字节
  • w two byte
  • k kB 千字节
  • M MB
  • G GB

size 后面的参数可以使用 + 或者 - 或者不加来标识,超过,少于,或者正好。

find / -size +700M   # 表示查找大于 700M 的文件
find / -size -50c # 表示查找小于 50 byte 的文件
find . -size 50M # 表示在当前目录查找正好 50M 的文件

通过时间来查找文件

Linux 会存储下面的时间:

  • Access time 上一次文件读或者写的时间
  • Modifica time 上一次文件被修改的时间
  • Change time 上一次文件 inode meta 信息被修改的时间

在按照时间查找时,可以使用 -atime, -mtime 或者 -ctime ,和之前 size 参数一样可以使用 + 或者 - 来标识超多多长时间或者少于多长时间。

find / -mtime 1          # 寻找修改时间超过一天的文件
find / -atime -1 # 寻找在一天时间内被访问的文件
find / -ctime +3 # 寻找 meta 信息被修改的时间超过 3 天的文件

寻找修改时间超过 1 小时的 mp3 文件

find /path/to/folder -maxdepath 1 -mmin +60 -type f -name "*.mp3"

其中的-mmin n 参数表示的就是文件内容在前 n 分钟没有修改。

find /path/to/folder -maxdepath 1 -mmin +60 -type f -name "*.mp3" -exec rm -f {} \;

通过上面的语句就能够一次性删除超过 60 分钟未修改的 mp3 了。

通过 Owner 和权限搜索

使用 -user 和 -group 参数来通过拥有者搜寻

find / -user einverne
find / -group shadow

同样按着权限查找文件

find / -perm 644
find / -perm -644 # 查找权限至少是 644 的文件

限制查找的深度

使用 -maxdepth 来限制查找的深度,默认情况下 find 会一层层搜索,如果只想让 find 命令查找当前目录或者子目录,可以使用

find -maxdepth 2 -name "query"

同理 还有一个选项 -mindepth

find -mindepth 2 -maxdepth 3 -name "query"

对搜索结果批处理

在搜索出结果之后,可以使用如下的方式对搜索的结果执行一个命令

find [param] -exec command {} \;

比如批量修改权限

find . -type f -perm 644 -exec chmod 664 {} \;
find . -type d -perm 755 -exec chmod 700 {} \; # 批量修改文件夹权限

批量删除时间超过 1 天的文件

综合上面按时间查找文件和对搜索结果批处理,可以获知

find /path/to/folder/* -mtime +1 -exec rm {} \;
  • find 后面接一个完整的 path
  • -mtime +1 表示的查找时间超过 1 天的内容
  • -exec 后面表示对搜索的结果进行处理

使用 locate

locate 命令需要额外安装

sudo apt install mlocate

locate 命令维护了一份文件和目录的数据库,所以检索速度会快一些,数据库通常一天更新一次,可以手动更新数据库

sudo updatedb
locate -S # 查看当前数据库数据

locate 使用的方式和 find 大致差不多。

每天学习一个命令:find 查找文件的更多相关文章

  1. linux常用命令指南——查找文件我最强:find

    2.3.2 查找文件我最强:find 2.3.2.1 find查找常用命令示例 find / -name 'wfy.txt' # 从根目录下开始查找文件wfy.txt find . -name '*f ...

  2. Linux命令: 查找文件中的字符串

    ①cat filename | grep 'string' ②编辑模式查找,/string, 依次敲入下面的命令 vim filename e i ESC /string 从光标位置开始往后查找第一个 ...

  3. 【Linux命令】命令行查找文件并进行操作

    查找: #找./下的所有txt文件,输出个数 find ./ -name "*.txt" | wc -l #查找并删除 find ./ -name "*.txt" ...

  4. dos命令dir查找文件的用法及实例

      功能:显示目录命令 格式:dir[盘符][路径][/W][/P][/L][/O:排序][/A:属性][/S] 参数介绍: /W -- 以宽行排列方式显示. /P -- 每显示满一屏停顿一下,待用户 ...

  5. Linux命令进阶篇-文件查看与查找

    上一篇的博客对于Linux如何在不同目录下跳转和查看目录下内容做出了总结,主要靠cd和ls,很常见也很实用.但是你看到目录下面那么多不同花花绿绿的文件,心里是不是痒痒,是不是想进去一探究竟,有办法! ...

  6. Linux下which、whereis、locate、find 命令查找文件

     转自:http://blog.csdn.net/gh320/article/details/17411743 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索 ...

  7. Linux 查找文件

    find 查找目录 -name "文件名"find / -name "php.ini"locate 文件名locate php.ini 一:locate命令 l ...

  8. [转帖]Linux查找文件6个高效工具

    Linux查找文件6个高效工具 https://www.linuxrumen.com/rmxx/176.html 需要实操 -inname -type 等等. 1. 前言 我们使用Linux过程中,经 ...

  9. day12 查找文件

    day12 查找文件 find命令:查找文件 find命令:在linux系统中,按照我们的要求去查询文件. 格式: find [查询的路径] [匹配模式] [匹配规则] 匹配模式: -name : 按 ...

随机推荐

  1. 利用nginx,腾讯云免费证书制作https

    之前一直在研究,https怎么弄.最近看到了腾讯云提供的免费得ssl证书,寻思把网站弄成https. 首先先去腾讯云购买一个免费得证书. 点击后填写内容, 然后下载证书 解压证书就可以看到,提供四种方 ...

  2. c++ stod很慢

    C++ Convert String to Double Speed (There is also a string-to-int performance test.) A performance b ...

  3. Redis自学笔记:2.准备

    第2章:准备 '纸上得来终觉浅,绝知此事要躬行'--陆游 2.2启动和停止redis 表2-1 redis可执行文件说明 文件名 说明 redis- server redis服务器 redis-cli ...

  4. ubuntu16 64 搭建lnmp环境

    //安全设置linux(ubuntu16 64) 安全设置1.修改ssh端口 vi /etc/ssh/sshd_config 如果用户想让22和60000端口同时开放,只需在/etc/ssh/sshd ...

  5. 更改pip安装源的镜像解决安装总是timeout的情况(pip 豆瓣镜像源)

    由于国外的pip源总是由于各种原因不能被访问或者网速过慢,而造成的timeout错误 解决方法是修改pip的配置文件(如果没有配置文件在相应的地方新建,配置文件的路径和名字参考这里),设置安装包时候访 ...

  6. 网络 [HNOI2016]

    Description 一个简单的网络系统可以被描述成一棵无根树.每个节点为一个服务器.连接服务器与服务器的数据线则看做一条树边.两个服务器进行数据的交互时,数据会经过连接这两个服务器的路径上的所有服 ...

  7. 线段树及Lazy-Tag

    一:线段树 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点.使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(lo ...

  8. 如何使用 ccs7.2调试代码

    首先将单片机连接在电脑USB口上 或者 或者F11快捷键 如果编译通过的话,会是这个样子 F11调试后会停在主函数开始处 第一个黄绿组合的按钮就是继续调试,快捷键为F8,按F8后它会停在断点处,如果为 ...

  9. PHP04

    PHP04 1.HTTP(hypertext transfer protocol) 1)HTTP是端与端之间的通讯协议 chrome://net-internals/ 可查看DNS缓存 浏览器-检查- ...

  10. HTML5 学习07——Video(视频)Audio(音频)

    <video> 元素:提供了 播放.暂停和音量控件来控制视频. width 和 height 属性:控制视频的尺寸 <video> 与</video> 标签之间插入 ...