shell 删除空文件夹

shell 删除空文件夹

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

你可能感兴趣的:(shell 删除空文件夹)