V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
frmongo
V2EX  ›  Linux

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

  •  
  •   frmongo · 2020-11-30 11:17:07 +08:00 · 2549 次点击
    这是一个创建于 1240 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题是,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

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

    head 读完 50000 行就退出,之后 ls 再尝试写进管道就会触发 SIGPIPE 退出自己。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   988 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 20:00 · PVG 04:00 · LAX 13:00 · JFK 16:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.