Skynet

          ---------- ---------- 我的新 blog : liukaiyi.cublog.cn ---------- ----------

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            112 Posts :: 1 Stories :: 49 Comments :: 0 Trackbacks

          1.windows cygwin 版本 
            find . -type d|
             
          du |
              
          gawk '{if($1=="0"){print $2}}' |     #我這使用 cygwin判斷 $1==0  ,如果使用 linux 那就 $1=="4"
                 sort 
          -ru |
                   gawk '{system(
          "rmdir "$0)}'

          2.linux  版本(其實,這個太不嚴(yán)謹(jǐn)!)
          find . -type d|
              du 
          -|
               gawk 
          '{if($1=="4"){print $2}}' |   
                 
          sort -ru |
                   gawk 
          '{system("rmdir "$0)}'

          3.shell + python
          查找 文件夾大小py,參考:獲取文件夾大小的python代碼
          #!/bin/python
          import os,sys
          from os.path import join, getsize

          def getdirsize(dir):
                  size 
          = 0L;
                  
          for root, dirs, files in os.walk(dir):
                         
          size += sum([ getdirsize(join(root,dname)) for dname in dirs ]);
                          size += sum([getsize(join(root, name)) for name in files]);
                          
          return size;

          dir_path
          =sys.argv[1];
          filesize 
          = getdirsize(dir_path);
          print dir_path,"\t",filesize ;

          shell
          find . -type d -exec python getDirSize.py {} \;|
          sort
           -ru |
          gawk 
          '{if($2=="0"){print $1}}' |
          gawk 
          '{system(" rmdir "$0)}'





          find . -type d #查找文件夾
          du  #文件夾大小
          gawk '{if($1=="0"){print $2}}' #文件夾為 0 輸出
          sort -ru #為刪除準(zhǔn)備( 比如 文件夾 ./t1 空 ./t1/t11 空 。排序為 先 ./t1/t11 后 ./t1 。這刪除就不會錯  )
          gawk '{system("rmdir "$0)}' #野蠻的刪除







          其他:
          結(jié)合sort -u  可以找出最小或最大 幾個文件

          #!python
          #
           python this.py /home/xj_liukaiyi/imusic/ ".*128kbps\/.*\.mp3"
          import os,sys,re
          from os.path import join, getsize

          def getdirsize(dir,refile):
              
          for root, dirs, files in os.walk(dir):
              
          for dname in dirs :
                  getdirsize(join(root,dname),refile)
                  
          for name in files :
                      ffname
          =join(root,name)
                      
          if re.search(refile,ffname):
                          
          print "%09d\t%s" % (getsize(ffname),ffname)

          dir_path
          =sys.argv[1];
          file_re
          =sys.argv[2];

          filesize 
          = getdirsize(dir_path,file_re);




          整理 www.aygfsteel.com/Good-Game
          posted on 2009-03-18 15:03 劉凱毅 閱讀(3704) 評論(2)  編輯  收藏 所屬分類: shell

          Feedback

          # re: shell 刪除空文件夾 2009-03-18 17:21 chaifeng

          目錄 a 里面有個空目錄 b,那 a 是空目錄么?

          你那個判斷是否為 0 有什么依據(jù)呢?我這里看到的是 4。

          更簡單一點的辦法是:
          find . -type d -empty -exec rmdir {} \;

          可以把我剛才說的那個 b 刪除,a 保留了。  回復(fù)  更多評論
            

          # re: shell 刪除空文件夾 2009-03-19 09:32 劉凱毅
          恩 我這 a 也默認(rèn)是要刪除的 。


          啊你這說的 文件夾大小 ,我這使用的cygwin 確實是0 .
          如果 linux gawk '{if($1=="4"){print $2}}' 看樣子要 4 了  回復(fù)  更多評論
            

          主站蜘蛛池模板: 藁城市| 扶风县| 平顶山市| 济源市| 台前县| 同德县| 石城县| 宽城| 靖安县| 瑞昌市| 辽源市| 子洲县| 五家渠市| 晋宁县| 平南县| 瑞昌市| 达尔| 云龙县| 盐亭县| 义乌市| 新晃| 遂平县| 申扎县| 灌云县| 江孜县| 阿荣旗| 漳浦县| 砚山县| 社会| 民县| 堆龙德庆县| 通化县| 泰来县| 蕉岭县| 甘谷县| 阿坝县| 邻水| 霞浦县| 哈尔滨市| 台安县| 平谷区|