从文件夹中压缩任意 5 万个文件,命令怎么写呢?

2020-11-30 11:17:07 +08:00
 frmongo
问题是,linux 下有个文件夹 box 里有数百万个文件,目标是拿出任意 5 万个文件

我已经实现了 1 个过程(前提是文件都是规则命名的)如下(为了防止 tar 报参数过多的错误,就先做了一个索引)
echo -e box/log_{1..50000}.txt"\n" > aaa.txt
sed -i "s/ //" aaa.txt
tar -cvzf target.tar.gz --files-from ./aaa.txt

问题是,如果文件名没有规律,拿出的命令该怎么写呢?
2691 次点击
所在节点    Linux
5 条回复
ETiV
2020-11-30 11:27:27 +08:00
用 find
find 为了保证速度,它输出的结果是无序的
frmongo
2020-11-30 11:30:19 +08:00
@ETiV #1 find 可以只输出随机找到的前 5 万个结果吗
ooxxcc
2020-11-30 11:33:15 +08:00
ls|sort -R|head -n 50000
frmongo
2020-11-30 11:46:07 +08:00
@ooxxcc #3 多谢,我改了下,因为文件太多了,sort 会卡死,这样就刚好 ls -U box | head -n 50000 >3.txt
no1xsyzy
2020-11-30 15:46:04 +08:00
目标是拿出“任意” 5 万个文件
不是随机吧……

head 读完 50000 行就退出,之后 ls 再尝试写进管道就会触发 SIGPIPE 退出自己。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/730513

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX