Linux如何在目录下灵活创建、欣赏、删除百万个文件
目录[*]一、创建百万级小文件
[*]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.data、2.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/nullhttps://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184514042-345558587.png
3.2、多核的并发实行
time seq 1000 |xargs -i -P 4 dd if=/dev/urandom of={}.data bs=1024 count=1 &> /dev/nullhttps://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184513723-1427506970.png
二、如何列出/欣赏这些文件
1、查看目录下文件的数量
ls | wc -lhttps://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184513336-531694405.png
2、列出?
一般情况下我们会直接使用ls进行列出处置惩罚
lshttps://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184512963-1327098901.pnghttps://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184512525-741200322.png但是不丢脸出键入ls命令后终端会卡住
最后所有的文件名会一次性打印在终端的屏幕上
3、ls -f(关闭排序功能)
默认ls命令会在内存中对输出的文件进行排序
# man ls | grep -w "\-f"
-f do not sort, enable -aU, disable -ls --color3.1、实行效率对比
# time ls &> /dev/null
real 0m1.394s
user 0m0.906s
sys 0m0.488s
# time ls -f &> /dev/null
real 0m0.233s
user 0m0.136s
sys 0m0.097shttps://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184512132-1396997568.png
4、通过重定向导入到文件中欣赏对应的文件名
ls -1 -f > /tmp/filelist.txt-1:一行一个文件名
-f:关闭排序功能
https://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184511821-1960054567.png
通过less、more、vim等工具进行欣赏和搜索
三、如何快速删除目录下所有文件
1、rm -f ./* ?
rm -rf ./*https://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184511462-2047600905.png
很显然,rm的参数列表过长,无法实行rm命令
2、将整个目录名作为参数传递给rm命令
rm -rf testhttps://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184511109-745879095.png
3、使用find共同-delete参数
find /test/ -mindepth 1 -deletehttps://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184510760-1309688879.png
这条命令会从指定目录开始,查找所有非目录项(即文件)并删除它们。
-mindepth 1 确保不删除当前目录本身,以防万一你必要生存该目录结构以便后续检查或操纵。
四、必要生存指定文件怎么办
1、创建一个文件列出必要生存的文件名(一行一个文件名)
# cd /tmp/
# cat > reserved_list.txt <<EOF
> 6.data
> 66.data
> 666.data
> 6666.data
> 66666.data
> EOF
#在一个干净的目录下创建2、创建一个名为empty的空目录
# mkdir empty3、使用rsync命令
# rsync -av --delete /tmp/empty/ /test/ --exclude-from=/tmp/reserved_list.txthttps://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184510366-808491610.png
3.1、命令详解
https://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184509955-591951044.png
[*]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/https://img2023.cnblogs.com/blog/3332572/202405/3332572-20240527184509554-2136372888.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]