Skynet

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

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  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  版本(其实,这个太不严谨!)
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 #为删除准备( 比如 文件夹 ./t1 空 ./t1/t11 空 。排序为 先 ./t1/t11 后 ./t1 。这删除就不会错  )
gawk '{system("rmdir "$0)}' #野蛮的删除







其他:
结合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.blogjava.net/Good-Game
posted on 2009-03-18 15:03 刘凯毅 阅读(3643) 评论(2)  编辑  收藏 所属分类: shell

Feedback

# re: shell 删除空文件夹 2009-03-18 17:21 chaifeng

目录 a 里面有个空目录 b,那 a 是空目录么?

你那个判断是否为 0 有什么依据呢?我这里看到的是 4。

更简单一点的办法是:
find . -type d -empty -exec rmdir {} \;

可以把我刚才说的那个 b 删除,a 保留了。  回复  更多评论
  

# re: shell 删除空文件夹 2009-03-19 09:32 刘凯毅
恩 我这 a 也默认是要删除的 。


啊你这说的 文件夹大小 ,我这使用的cygwin 确实是0 .
如果 linux gawk '{if($1=="4"){print $2}}' 看样子要 4 了  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: