rm命令弱爆了!(一)

简介: rm命令弱爆了!

大家好,我是良许。创建、删除和修改文件是用户在 Linux 系统中执行的非常常见操作。大家都知道,在 Linux 系统里使用 rm 命令删除单个文件时,几乎一瞬间就完成了。但是如果文件数量很大,那么删除操作就需要很长时间才能完成。你有没想过,删除 50 万个小文件,需要花费多少时间?我写这篇文章的目的,是为了找出在 Linux 中删除巨量文件的最快方法。通过测试发现,rm 命令简直弱爆了!我们将从一些简单的文件删除方法开始,然后比较不同方法完成文件删除任务的速度。看看哪种方式删除速度最快。微信图片_20220419170714.jpg

1. 文件删除的几种方式

在 Linux 系统中删除文件,最常用的命令就是 rm 命令。这个命令相信大家都已经很熟悉了,我们来简单回顾一些 rm 命令的例子。

$ rm -f testfile

-f 选项在上面的命令中,表示将在不要求确认的情况下强行删除文件。

$ rm -rf testdirectory

这个命令将删除名为 testdirectory 的目录以及该目录中的所有内容(使用的 -r 选项是递归删除文件)。而删除目录,我们还有另一个命令,那就是 rmdir ,但是它只有在目录为空时才会删除该目录。

$ rmdir testdirectory

现在我们看看在 Linux 中删除文件的一些其它不同方法。我最喜欢的方法之一是使用 find 命令,再进行删除操作。find 命令是一个非常方便的工具,可用于根据文件的类型、大小、创建日期、修改日期和更多不同的条件来搜索文件。我们来看一个 find 命令使用 -exec 来调用 rm 命令的例子。

$ find /test -type f -exec rm {} \;

上述命令将删除 /test 目录中的所有文件。首先 find 命令将查找目录中的所有文件,然后对于每个搜索结果,它会执行 rm 命令。我们再看看可以与 find 命令一起使用的一些不同方法来删除文件。

$ find /test -mtime +7 -exec rm {} \;

在上述示例中,find 命令将搜索 /test 目录中 7 天前修改过的所有文件,然后删除每个文件。

$ find /test -size +7M -exec rm {} \;

上述示例中,将搜索目录 /test 目录中所有大于 7M 的文件,然后再删除它们。在以上我们列出来的所有 find 命令示例中,都会为找到的每个文件调用 rm 命令。例如,在上面的最后一个 find 命令中,如果结果中有 50 个大于 7M 的文件,那么将调用 50 次 rm 命令删除文件。而这样的操作将需要花费更长的时间。除了在 find 中借助 -exec 参数调用 rm 命令外,还有一个更好的选择,那就是使用 -delete 选项。比如:

$ find /test -size +7M -delete

达到的效果与上一条命令一样。

目录
相关文章
|
数据可视化 JavaScript 前端开发
Qt Quick 定时技巧全攻略:从底层原理到高级应用(二)
Qt Quick 定时技巧全攻略:从底层原理到高级应用
618 0
|
数据可视化 搜索推荐 关系型数据库
【最佳实践】实时计算Flink在IoT行业的实时数仓建设实践
据 IDC 估计,到 2020 年物联网将在全球范围内产生 1.46 万亿美元的价值。据预测,届时中国的物联网市场规模将超过 1.8 万亿人民币。
|
API
GEE案例分析——利用sentinel-3数据计算空气污染指数(Air Pollution Index,简称API)
GEE案例分析——利用sentinel-3数据计算空气污染指数(Air Pollution Index,简称API)
409 0
|
开发工具 git Windows
经验:停止 cherry-pick,请开始 merge!
cherry-pick 是一个比较常用的 git 操作,可以将一个分支上的 commit “精选”到另一个分支上。然而在最近的开发过程中,却时不时的遇到 merge 冲突。在下文中,我将会详细的分析 cherry-pick 造成冲突的原因,以及 cherry-pick 可能造成的其他更严重问题。
7707 0
经验:停止 cherry-pick,请开始 merge!
|
9月前
|
自然语言处理 搜索推荐 数据安全/隐私保护
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
鸿蒙登录页面设计展示了 HarmonyOS 5.0(Next)的未来美学理念,结合科技与艺术,为用户带来视觉盛宴。该页面使用 ArkTS 开发,支持个性化定制和无缝智能设备连接。代码解析涵盖了声明式 UI、状态管理、事件处理及路由导航等关键概念,帮助开发者快速上手 HarmonyOS 应用开发。通过这段代码,开发者可以了解如何构建交互式界面并实现跨设备协同工作,推动智能生态的发展。
516 10
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
|
消息中间件 关系型数据库 MySQL
B/S基于云计算的云HIS智慧医院管理系统源码带电子病历编辑器
前端:Angular+Nginx 后台:Java+Spring,SpringBoot,SpringMVC,SpringSecurity,MyBatisPlus,等 数据库:MySQL + MyCat 缓存:Redis+J2Cache 消息队列:RabbitMQ 任务调度中心:XxlJob 报表组件:itext + POI + ureport2 数据库监控组件:Canal 接口技术:RESTful API + WebSocket + WebService
224 0
|
存储 Linux Shell
【Shell 命令集合 网络通讯 】Linux 显示当前终端的名称 tty命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示当前终端的名称 tty命令 使用指南
275 0
|
Java API 容器
理解HTTP协议中的multipart/form-data
之前在写一个通用HTTP组件的时候遇到过媒体(Media)类型multipart/form-data的封装问题,这篇文章主要简单介绍一下HTTP协议中媒体类型multipart/form-data的定义、应用和简单实现。
1374 0
理解HTTP协议中的multipart/form-data
|
人工智能 UED
AIGC平台营收模式
【2月更文挑战第17天】AIGC平台营收模式
444 1
AIGC平台营收模式
|
数据采集 前端开发 数据可视化
程序员必知:基于氚云平台的应用开发学习(一)
程序员必知:基于氚云平台的应用开发学习(一)
490 0