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

问一下技术性蛋疼问题,关于linux打包。

  •  
  •   vking · Oct 11, 2012 · 3163 views
    This topic created in 4945 days ago, the information mentioned may be changed or developed.
    假如当前目录下有100个文件夹,这些文件夹的大小从1MB-10GM不等,怎么才能把低于1G的所有文件夹打包在一起?
    只能通过命令行。
    10 replies    1970-01-01 08:00:00 +08:00
    flylee2011
        1
    flylee2011  
       Oct 11, 2012
    写个shell不就行了。。
    vking
        2
    vking  
    OP
       Oct 11, 2012
    @flylee2011 不会shell,求指点。
    flylee2011
        3
    flylee2011  
       Oct 11, 2012
    @vking 就是写一段脚本程序,遍历所有的文件夹,把大小小于1G的文件夹打包就好了吧。
    具体 shell 看语法学吧。。这也不好说
    vking
        4
    vking  
    OP
       Oct 11, 2012
    @flylee2011 现学现卖.我直接用的管道.如需纰漏,请指出.这里选择的是大于等于100MB的文件夹.
    du -sk * | awk '$1>=102400' | sort -nr | awk '{print $2}' | xargs tar cvzf back.tar.gz
    ratazzi
        5
    ratazzi  
       Oct 11, 2012   ❤️ 1
    find dir -size -1G | xargs tar rvf filename.tar
    vking
        6
    vking  
    OP
       Oct 11, 2012
    @ratazzi 真相只有一个..........
    已感谢.
    cabbala
        7
    cabbala  
       Oct 11, 2012
    @vking 第一个awk 少了{},然后其实也不需要sort。。

    du -sk * | awk '{if($1>=102400){print $2}}' | xargs tar cvzf back.tar.gz
    gavingeng
        8
    gavingeng  
       Oct 11, 2012
    find -type d -size -1G | xargs tar -zcvf file.tar.gz
    vking
        9
    vking  
    OP
       Oct 11, 2012
    @cabbala sort忘记删了。的确不需要。
    没有{}也行。
    用awk显得更灵活。
    cabbala
        10
    cabbala  
       Oct 11, 2012
    @vking 这得看awk版本,有些版本的awk是不允许没有{}的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   6013 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 01:57 · PVG 09:57 · LAX 18:57 · JFK 21:57
    ♥ Do have faith in what you're doing.