Linux如何在目录下灵活创建、浏览、删除百万个文件

news2024/9/21 16:27:08

文章目录

    • 一、创建百万级小文件
      • 1、单核CPU情况
      • 2、多核CPU情况
      • 3、执行效率对比
        • 3.1、单核的顺序执行
        • 3.2、多核的并发执行
    • 二、如何列出/浏览这些文件
      • 1、查看目录下文件的数量
      • 2、列出?
      • 3、ls -f(关闭排序功能)
        • 3.1、执行效率对比
      • 4、通过重定向导入到文件中浏览对应的文件名
    • 三、如何快速删除目录下所有文件
      • 1、rm -f ./* ?
      • 2、将整个目录名作为参数传递给rm命令
      • 3、使用find配合-delete参数
    • 四、需要保留指定文件怎么办
      • 1、创建一个文件列出需要保留的文件名(一行一个文件名)
      • 2、创建一个名为empty的空目录
      • 3、使用rsync命令
        • 3.1、命令详解
      • 4、检查源目录是否保留了指定文件

一、创建百万级小文件

1、单核CPU情况

seq 1000000 |xargs -i dd if=/dev/zero of={}.data bs=1024 count=1 &> /dev/null
#生成一百万个大小为1KB、内容全为零的文件

seq 1000000 |xargs -i dd if=/dev/urandom of={}.data bs=1024 count=1 &> /dev/null
#生成一百万大小为1KB,内容为随机数据的文件
  • 首先通过seq 1000000生成从1到1000000的序列

  • | (管道符号): 将前面命令的输出作为后面命令的输入。

  • xargs: 是一个用于将输入行转换为命令行参数的工具。

  • -i: 选项告诉xargs将输入行中的占位符(默认是{} )替换为输入行的内容。

  • dd是一个强大的复制和转换数据的命令。

  • if=/dev/null:指定/dev/zero作为输入文件,这是一个无限量供应字节流的特殊文件,所有读取操作都会返回零值字节

  • if=/dev/urandom: 指定了输入文件为/dev/urandom,这是一个生成随机数的设备文件,可以提供随机数据。

  • of={}.data: 指定了输出文件的格式,其中{}会被seq生成的数字依次替换,形成如1.data2.data这样的文件名

  • bs=1024: 设置每次读写的块大小为1024字节。

  • count=1: 指定只读写一次块,因此每个文件的大小是1KB。

  • >> /dev/null 2>&1: 这部分重定向了命令的所有输出(标准输出和错误输出)到/dev/null。这意味着不论是正常输出还是错误信息都不会显示在终端上。

2、多核CPU情况

seq 1000000 |xargs -i -P 0 dd if=/dev/zero of={}.data bs=1024 count=1 &> /dev/null
#生成一百万个大小为1KB、内容全为零的文件

seq 1000000 |xargs -i -P 0 dd if=/dev/urandom of={}.data bs=1024 count=1 &> /dev/null
#生成一百万大小为1KB,内容为随机数据的文件

-P 0选项指定了尽可能多地开启并发进程数量

如果要保证最高效率,应当设置并发进程数量等于cpu的核心数量

3、执行效率对比

3.1、单核的顺序执行
time seq 1000 |xargs -i dd if=/dev/urandom of={}.data bs=1024 count=1 &> /dev/null

image-20240527163032408

3.2、多核的并发执行
time seq 1000 |xargs -i -P 4 dd if=/dev/urandom of={}.data bs=1024 count=1 &> /dev/null

image-20240527163335036

二、如何列出/浏览这些文件

1、查看目录下文件的数量

ls | wc -l

image-20240527163628645

2、列出?

一般情况下我们会直接使用ls进行列出处理

ls
image-20240527164226494
image-20240527164419393

但是不难看出键入ls命令后终端会卡住

最后所有的文件名会一次性打印在终端的屏幕上

3、ls -f(关闭排序功能)

默认ls命令会在内存中对输出的文件进行排序

[root@localhost test]# man ls | grep -w "\-f"
       -f     do not sort, enable -aU, disable -ls --color
3.1、执行效率对比
[root@localhost test]# time ls &> /dev/null

real    0m1.394s
user    0m0.906s
sys     0m0.488s
[root@localhost test]# time ls -f &> /dev/null

real    0m0.233s
user    0m0.136s
sys     0m0.097s

image-20240527165030866

4、通过重定向导入到文件中浏览对应的文件名

ls -1 -f > /tmp/filelist.txt

-1:一行一个文件名

-f:关闭排序功能

image-20240527165511409

通过less、more、vim等工具进行浏览和搜索

三、如何快速删除目录下所有文件

1、rm -f ./* ?

rm -rf ./*

image-20240527170109543

很显然,rm的参数列表过长,无法执行rm命令

2、将整个目录名作为参数传递给rm命令

rm -rf test

image-20240527170416560

3、使用find配合-delete参数

find /test/ -mindepth 1 -delete

image-20240527171453853

这条命令会从指定目录开始,查找所有非目录项(即文件)并删除它们。

-mindepth 1 确保不删除当前目录本身,以防万一你需要保留该目录结构以便后续检查或操作。

四、需要保留指定文件怎么办

1、创建一个文件列出需要保留的文件名(一行一个文件名)

[root@localhost ~]# cd /tmp/
[root@localhost tmp]# cat > reserved_list.txt <<EOF
> 6.data
> 66.data
> 666.data
> 6666.data
> 66666.data
> EOF

#在一个干净的目录下创建

2、创建一个名为empty的空目录

[root@localhost tmp]# mkdir empty

3、使用rsync命令

[root@localhost ~]# rsync -av --delete /tmp/empty/ /test/ --exclude-from=/tmp/reserved_list.txt

image-20240527180039396

3.1、命令详解

image-20240527183757314

  • rsync: 是一个用于文件传输和数据备份的高效工具,它可以镜像本地或远程系统上的文件和目录,并且可以高效地更新差异部分。
  • -av: 这里有两个选项:
    • -a--archive 是一个综合选项,意味着进行归档模式的拷贝,它保留了 symbolic links, devices, permissions, owner, groups, timestamps, 和其它文件属性,并递归地拷贝目录。
    • -v--verbose 表示详细模式,会让 rsync 在执行时输出更多的信息,比如哪些文件正在被传输。
  • --delete: 这个选项指示 rsync 它会让目标目录(/test/)与源目录(/tmp/empty/)保持一致,移除目标目录中多余的文件。
  • /tmp/empty/: 源目录,这是一个假设为空的目录。因为源目录是空的,结合 --delete 选项,实际上会导致目标目录 /test/ 中的所有内容被删除(除非有排除规则)。
  • /test/: 目标目录,你想同步到或依据源目录进行清理的目录。
  • --exclude-from=/tmp/reserved_list.txt: 这个选项指定了一个文件列表,其中包含了不想被删除或同步的文件/目录的模式。rsync 会读取 /tmp/reserved_list.txt 文件中的每一行作为排除模式,确保这些模式匹配到的文件或目录不会被删除。

整个命令的意思是:以归档模式并且详细输出的形式,同步空目录 /tmp/empty/ 到目录 /test/,在同步过程中删除目标目录中源目录不存在的文件,但排除 /tmp/reserved_list.txt 文件中列出的文件或目录不被删除。这是一种清理或重置目录结构的方法,同时保留特定的“保留”文件或目录不被删除。

4、检查源目录是否保留了指定文件

ls /test/

image-20240527180105082

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1702459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024深圳数字能源展推介会在巴西圣保罗举行

4月26日&#xff0c;深圳市发展和改革委员会在巴西圣保罗国际工程机械及矿山机械展上举行专题推介会&#xff0c;介绍将于今年下半年在深圳市举办的2024国际数字能源展。 深圳市发展和改革委员会主任郭子平在推介会上介绍&#xff0c;为进一步深化数字能源领域互利共赢&#xf…

“二叉堆:不是,啊?”

目录 前言一、堆的概念及结构堆的性质&#xff1a;堆的结构:最大堆最小堆堆顶注意 二、堆的实现1.初始化堆2. 堆的插入什么是堆的向上调整算法&#xff1f; 3.堆的删除什么是堆的向下调整算法&#xff1f; 4.获取堆顶的数据5.获取堆的数据个数6.堆的判空7.堆的销毁 三、建堆的时…

逻辑分析仪的调试使用

调试软件下载&#xff1a;点击跳转 一、接线 逻辑分析仪 设备 GND --- GND CHX&#xff08;数据通道&#xff09; --- 通信引脚 二、数据采集 图中两个可以选择数字大小的地方分别表示 采样深度 &#xff08;10M Samples&a…

eBay运营账号防关联成功的关键因素是什么?

一、什么是eBay&#xff1f; eBay如今的发展现状呈现出积极且充满活力的态势。作为全球知名的在线拍卖和购物平台&#xff0c;随着全球消费者对线上购物的需求不断增长&#xff0c;这为卖家提供了广阔的市场空间和盈利机会&#xff0c;但多账号的运营若处理不好容易引起账号被关…

宝塔下新增站点 No Input File Specified.错误修复

今天明月收到了一个购买【站长必备在线工具源码含上百款工具-博客优化修复版】用户的求助&#xff0c;在宝塔里新增网站部署好工具源码后&#xff0c;访问出现“No input file specified.”的提示。其实出现这个提示一般都是 PHP 文件无法被解析造成的。 简单排查了一下宝塔相关…

521源码-免费下载-WordPress全能自动采集与发布插件 – WP-AutoPostPro 汉化版

更多网站源码学习教程&#xff0c;请点击&#x1f449;-521源码-&#x1f448;获取最新资源 本工具下载地址&#xff1a;WordPress全能自动采集与发布插件 – WP-AutoPostPro 汉化版 - 521源码 WP-AutoPostPro是一款出类拔萃的WordPress自动采集发布插件&#xff0c;凭借其卓…

剪画小程序:分享3个无字幕保存高清视频的方法!!!

视频怎么去水印&#xff1f; 视频制作是当下越来越流行的一种形式&#xff0c;但是很多时候我们会发现一些精美的视频却被水印所遮盖。 尤其是一些自媒体人想要进行二创时。。。 那么&#xff0c;该如何去除视频水印保存高清原视频呢&#xff1f; 今天&#xff0c;小编分享…

全国各城市间驾车耗时和距离矩阵数据集(更新至2022年)

数据简介&#xff1a;城市之间距离越远&#xff0c;耗时越长。经济发达地区的交通状况较好。各城市之间的驾车耗时和距离存在差异。有些城市之间的交通非常便捷&#xff0c;而有些城市之间的交通则较为不便。这表明中国的交通网络发展尚不平衡&#xff0c;需进一步优化。特别是…

解密 Alpha 勒索软件

Alpha 勒索软件很容易与 ALPHV 勒索软件混淆&#xff0c;但其实这是两个不同的勒索软件团伙。近期&#xff0c;Alpha 勒索软件团伙在暗网上建立了数据披露网站&#xff0c;并且对外公开了6个受害者。 通常来说&#xff0c;勒索软件运营者在启动数据披露网站前会保持攻击态势。一…

Yolov5保姆及入门-含源码【推荐】

前言 YOLO系列模型作为一种实时目标检测算法&#xff0c;自从YOLO1发布以来&#xff0c;就以其检测速度快、准确率高而受到广泛关注。随着技术的迭代&#xff0c;YOLO系列已经发展到了YOLO8。本文将详细介绍YOLO5的技术规格、应用场景、特点以及性能对比。 yolov5源码下载地址…

【软件测试】bug篇|软件测试的生命周期|描述bug的要素|bug的级别|bug的生命周期|高频面试题:与开发产⽣争执怎么处理

目录 一、软件测试的⽣命周期 二、BUG 2.1 bug的概念 2.2 描述bug的要素 2.3 bug级别 2.4 bug的⽣命周期 &#x1f4a1;2.5 与开发产⽣争执怎么办&#xff08;⾼频考题&#xff09; &#x1f4a1; 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&…

四川省税务局CDH国产化替代实践

“传统数据仓库对于数据处理时效较低&#xff0c;且无法处理实时增量数据及数据变更&#xff0c;同时&#xff0c;在面对海量税务数据大规模进行查询分析等方面存在一些挑战。我们希望尽快寻找到一款能够替代CDH&#xff0c;并且具备灵活扩展能力的大数据解决方案&#xff0c;以…

Kubernetes 容器资源管理Resources和探针Probe

资源配额 Resources 在 Kubernetes 中&#xff0c;resources 配置用于设置容器的资源请求和限制&#xff0c;以确保集群中的资源&#xff08;如 CPU 和内存&#xff09;得到合理分配和使用。 在之前的pod中&#xff0c;不写 resources 字段。就意味着 Pod 对运行的资源要求“…

集智书童 | YOLOv10开源|清华用端到端YOLOv10在速度精度上都生吃YOLOv8和YOLOv9

本文来源公众号“集智书童”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;YOLOv10开源&#xff5c;清华用端到端YOLOv10在速度精度上都生吃YOLOv8和YOLOv9 在过去几年中&#xff0c;YOLO系列模型已成为实时目标检测领域的主导范式…

图像处理之基于标记的分水岭算法(C++)

图像处理之基于标记的分水岭算法&#xff08;C&#xff09; 文章目录 图像处理之基于标记的分水岭算法&#xff08;C&#xff09;前言一、基于标记点的分水岭算法应用1.实现步骤&#xff1a;2.代码实现 总结 前言 传统分水岭算法存在过分割的不足&#xff0c;OpenCV提供了一种…

图片提取表格要怎么做?7个软件教你快速进行图片识别

图片提取表格要怎么做&#xff1f;7个软件教你快速进行图片识别 要从图片中提取表格&#xff0c;您可以使用以下七款软件来快速进行图片识别和表格提取&#xff1a; 1.一键识别王&#xff1a;这是一款专业的OCR&#xff08;光学字符识别&#xff09;软件&#xff0c;可以帮助…

在通过跨网文件交换时,如何保障科研结构核心研究数据?

当今科研领域&#xff0c;数据如同生命线&#xff0c;支撑着每一个突破性发现的诞生。随着国际合作的加深&#xff0c;跨网文件交换成了常态&#xff0c;但这也为科研机构的核心研究数据安全带来了一系列挑战。想象一下&#xff0c;那些精心搜集和分析的宝贵数据&#xff0c;在…

【Typescript】通过变量的值即可获取变量的类型【typeof 变量】

注意&#xff1a;只要变量的类型准确,则typeof获取变量的类型就不会错 enum Test {a "a0",b "b0" }// 这里的a是一个变量的值 let a: Test.a "a0" as Test.a// 这里的typeof a是一个类型【Test.a】 let x: typeof a Test.a

【C++】开源:RabbitMQ安装与配置使用(SimpleAmqpClient)

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路&#x1…

Jlink卡死 JFlash keil 盗版JLINK

现象&#xff1a;用Keil打开Jlink配置页&#xff0c;会卡死。 解决方法&#xff1a;用旧版本的Jlink软件&#xff0c;因为淘宝买的很多JLINK下载器是盗版的&#xff0c;不支持新版本的JLINK软件。到https://www.segger.com/downloads/jlink下载旧版本的软件。 如果必须要用新版…