惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
月光博客
月光博客
T
Tailwind CSS Blog
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
罗磊的独立博客
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
量子位
雷峰网
雷峰网
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
博客园 - 聂微东
V
V2EX

晚花行乐

马克卡尼在2026年达沃斯论坛上的讲话(阅读材料) | 晚花行乐 鸡娃如何用力才是恰到好处 | 晚花行乐 读万卷书,行万里路的辩证关系 | 晚花行乐 反对培训机构掐尖招生 | 晚花行乐 小泽和建国会谈最后10分钟全文(阅读材料) | 晚花行乐 来看看 DeepSeek 怎么鸡娃 | 晚花行乐 谈谈基本功 | 晚花行乐 惠普 ProDesk SFF PC 各系列参数对比 | 晚花行乐 解决瘦客户机上安装 Debian 12 启动失败问题 | 晚花行乐 意拾喻言:老外写的文言文 | 晚花行乐 笠翁对韵中的典故(十三元) | 晚花行乐 谈谈中考取消四小门 | 晚花行乐 亚马逊云科技产品免费试用攻略(3) - 对象存储服务 | 晚花行乐 在 Windows 10 LTSC 版本上安装 WSL2 | 晚花行乐 Debian 12 的常用配置项 | 晚花行乐 在 Debian 12 上安装 Nvidia 显卡驱动程序 | 晚花行乐 解决 Debian 12 关机失败问题 | 晚花行乐 解决 VS Code 自动更新版本后卡在连接界面 | 晚花行乐 观看巴黎奥运会有感 | 晚花行乐 在 Windows10 上安装惠普旧打印机驱动程序 | 晚花行乐 欢迎关注公众号:晚花行乐 | 晚花行乐 如何编写拼写检查器 | 晚花行乐 亚马逊云科技产品免费试用攻略(2) - 云服务器 | 晚花行乐 Pandas 中 axis 参数的理解(附实例) | 晚花行乐 我打算命个名,叫什么什么 Manager | 晚花行乐 上海武康路历史建筑一览 | 晚花行乐 Python 实现简单的数学表达式解析并处理 | 晚花行乐 观看马拉松的感悟 | 晚花行乐 Python 保存 Cookies 到文件并再次读取 | 晚花行乐 如何为 Hugo 静态网站添加评论功能 | 晚花行乐
利用命令行工具(1) 搜索文件 | 晚花行乐
2020-03-27 · via 晚花行乐

在 利用命令行工具(0) 处理日志 一文中,一系列介绍命令行处理文件的文章,本文用于查找符合特定条件的文件。

本文介绍的命令适用 Linux 系统,在 Mac 系统下有些不同,甚至可能无法使用

按文件名搜索

寻找目录

只列出目录,而不显示文件

$ ls -d */

如果 用 ls -d . ,只能显示当前目录本身,而不能显示当前目录内容

寻找隐藏文件

列出当前目录下的隐藏文件,即以 . 开头的文件和文件夹

$ ls -d .*

上面这种写法会将当前目录( . )和上层目录( .. )一并显示出来,下面的写法可以将这两项排除:

$ ls -d .[!.]*

寻找所有的隐藏文件

$ find -type f -name ".*"

按文件名寻找文件

当前目录下,按照文件名关键字(比如 access.log )寻找文件,并打印出文件路径和名称

$ find . -name "access.log" -print

这里搜索起始位置 . 和搜索后动作 -print 都是缺省值,可以不提供,简化为:

$ find -name "access.log"

按文件名寻找文件夹

当前目录下,寻找名称中包含关键字的文件夹,使用 -type

$ find -type d -name "log"

忽略大小写

按文件名寻找文件,忽略大小写,使用 -iname 参数

$ find -iname "access.log"

类似 Access.logaccEss.log 都会被搜索出来

按文件属性搜索

寻找软链接(符号链接)

$ find -type l

寻找 777 属性的文件

$ find -type f -perm 777

寻找当前目录下 777 属性的文件夹

仅在当前目录下寻找,而不继续搜索子文件夹

$ find -maxdepth 1 -type d -perm 777

寻找只读文件

$ find -perm 0644

按文件属主搜索

$ find -user zhangsan

寻找所有属于 zhangsan 的文件

按文件大小搜索

寻找空文件

寻找空文件,包括所有子文件夹

$ find . -empty

仅在当前目录下寻找空文件

仅在当前层级目录下寻找,不进入子目录中

$ find . -maxdepth 1 -empty

寻找指定大小的文件

记得有个文件是 3.4MB 大小,不记得放哪里了,用 find 找出来:

$ find . -size 4M

-size 不接收浮点型数值,需要预先向上取整。

寻找大文件

磁盘快满了,需要在整个文件系统中寻找超大文件的位置。首先查看哪个目录比较大

$ du -h -d 1

再在目录里寻找超过 1G 的文件

$ find . -size +1G

找到后,列出文件详细信息,并按大小降序排列

$ find . -size +1G -print0 | xargs -0 ls -hlS

其他可以用的单位:

  • 字节:c
  • 512字节块:b(不写单位时的默认单位)
  • 双字节:w(适合搜中文)
  • kB:k
  • MB:M
  • GB:G

按修改时间寻找文件

寻找最新创建的文件

$  ls -Atr | tail -1

寻找过去7天内修改过的文件

$ find . -mtime -7

准确的说,是过去 7x24 小时内修改过的文件

参照其他文件的修改时间

寻找比某文件(比如 access.log)更晚修改过的文件,

$ find . -newer "access.log"

寻找最近24小时内被修改过的文件

$ find . -mtime 0 

取反逻辑

寻找扩展名不是 .gz 的文件:

$ find . -not -name "*.gz"

寻找非空的文件:

$ find . -not -empty -name "*.log"

上面的命令里, -not 可以简化为叹号 !

find 命令的用法总结

find 命令的基本格式为:

$ find 参数 起始搜索位置 表达式

其中: 参数 规定了 find 命令的行为,比如搜索时如何处理软链接,是否使用优化算法等参数
起始搜索位置 规定了搜索的起始位置,也就是搜索的顶层目录。
表达式 规定了满足什么条件的文件可以被筛选出来(Tests),和筛选后的进一步操作(Actions):

Windows 批处理文件

另外,除了这些 Linux 的命令行以外,在 Windows 下还可以使用如下批处理程序,实现搜索文件的目的:

各位读后有什么想法,请在下方留言吧!如果对本文有疑问或者寻求合作,欢迎 联系邮箱邮箱已到剪贴板

精彩评论