V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
leyle
V2EX  ›  问与答

linux 下一个目录里面有大概 60w 个小文件,如何把他们移动到不同的目录里面去啊?

  •  
  •   leyle · 2014-03-29 09:41:25 +08:00 · 3006 次点击
    这是一个创建于 3690 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个目录下,大概有60w个小文件,每个文件在10~40k之间,现在ls一下都要等待半天,有无方法可以把这60w的小文件,分别移动到不同的目录里面去,比如说,一个目录存放1w个小文件?
    第 1 条附言  ·  2014-03-29 10:25:41 +08:00
    有无可以不用遍历整个目录里面的内容就直接任意移动一部分文件到其他目录的方法?
    8 条回复    1970-01-01 08:00:00 +08:00
    clino
        1
    clino  
       2014-03-29 09:45:06 +08:00
    问题是你要怎么分类? 用文件名还是用时间什么的
    leyle
        2
    leyle  
    OP
       2014-03-29 09:51:25 +08:00
    @clino 无所谓怎么分类,只要能分割移动到不同的目录就行了,类似于 folder_1, folder_2, ....folder_n
    文件名没有特别的规则,都是数字和字母的组合,
    leyle
        4
    leyle  
    OP
       2014-03-29 10:21:44 +08:00
    @yangqi 这些方法都要遍历了整个目录里面的文件后才能决定如何操作,我想要的是,不需要遍历,因为遍历太耗时间了,
    yangqi
        5
    yangqi  
       2014-03-29 10:44:59 +08:00
    @leyle ls | head -n10 不用遍历整个目录的
    toctan
        6
    toctan  
       2014-03-29 11:53:32 +08:00
    @yangqi @leyle 建议使用 GNU parallel: http://www.gnu.org/software/parallel/

    ls -1 | head -n 10000 | parallel -m mv {} folder_1

    这样会快很多。
    msg7086
        7
    msg7086  
       2014-03-29 13:44:14 +08:00
    猜测并不是ls慢,而是把ls的结果显示在屏幕上慢……
    Lax
        8
    Lax  
       2014-03-29 21:26:54 +08:00
    find --exec
    先man find,有疑问再google(不能说太general,因为我每次也是这个步骤)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1191 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:49 · PVG 07:49 · LAX 16:49 · JFK 19:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.