V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
leyle
V2EX  ›  问与答

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

  •  
  •   leyle · Mar 29, 2014 · 3471 views
    This topic created in 4417 days ago, the information mentioned may be changed or developed.
    一个目录下,大概有60w个小文件,每个文件在10~40k之间,现在ls一下都要等待半天,有无方法可以把这60w的小文件,分别移动到不同的目录里面去,比如说,一个目录存放1w个小文件?
    Supplement 1  ·  Mar 29, 2014
    有无可以不用遍历整个目录里面的内容就直接任意移动一部分文件到其他目录的方法?
    8 replies    1970-01-01 08:00:00 +08:00
    clino
        1
    clino  
       Mar 29, 2014
    问题是你要怎么分类? 用文件名还是用时间什么的
    leyle
        2
    leyle  
    OP
       Mar 29, 2014
    @clino 无所谓怎么分类,只要能分割移动到不同的目录就行了,类似于 folder_1, folder_2, ....folder_n
    文件名没有特别的规则,都是数字和字母的组合,
    leyle
        4
    leyle  
    OP
       Mar 29, 2014
    @yangqi 这些方法都要遍历了整个目录里面的文件后才能决定如何操作,我想要的是,不需要遍历,因为遍历太耗时间了,
    yangqi
        5
    yangqi  
       Mar 29, 2014
    @leyle ls | head -n10 不用遍历整个目录的
    toctan
        6
    toctan  
       Mar 29, 2014
    @yangqi @leyle 建议使用 GNU parallel: http://www.gnu.org/software/parallel/

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

    这样会快很多。
    msg7086
        7
    msg7086  
       Mar 29, 2014
    猜测并不是ls慢,而是把ls的结果显示在屏幕上慢……
    Lax
        8
    Lax  
       Mar 29, 2014
    find --exec
    先man find,有疑问再google(不能说太general,因为我每次也是这个步骤)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2287 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 00:21 · PVG 08:21 · LAX 17:21 · JFK 20:21
    ♥ Do have faith in what you're doing.