[原创]列出指定目录及其子目录里的所有空目录

[原创]列出指定目录及其子目录里的所有空目录

[code:1]
#!/bin/bash
# filename: void_dirs_ls.sh
# author: skypp
# description: list void directories of specified directory and its sub directories
# usage: sh ./void_dirs_ls.sh [DIRECTORY]

dirs=($(ls $1 -R | grep : |sed s/://))
for((i=0;i<${#dirs[@]};i++))
do
((i<${#dirs[@]}-1)) && [[ ${dirs[$i+1]} != ${dirs[$i]}* ]] && [[ $(ls ${dirs[$i]}) == '' ]] && echo ${dirs[$i]} && continue || [[ $(ls ${dirs[$i]}) == '' ]] && echo ${dirs[$i]}
done
[/code:1]

同事想列出指定目录包括其子目录里的所有空目录,自个写了一个,不知道这里有没有更好的script
  不错 不错
通常用du来实现好像速度更快一些
[code:1]
#!/bin/bash
# filename: void_dirs_du.sh
# author: skypp
# description: list void directories of specified directory and its sub directories
# usage: sh ./void_dirs_du.sh [DIRECTORY]

dirs=($(du $1 | grep 0 | awk '{print $2}'))
[[ $(ls ${dirs[0]}) == '' ]] && echo ${dirs[0]}
for((i=1;i<${#dirs[@]};i++))
do
[[ ${dirs[$i-1]} != ${dirs[$i]}* ]] && [[ $(ls ${dirs[$i]}) == '' ]] && echo ${dirs[$i]}
done
[/code:1]
突然感觉用awk一行就可以实现,请哪位赐教,小弟谢过
一不小心成精华贴了,呵呵
这次的是一句话的,效率可能低了点,不过也算是一个实现了
[code:1]
#!/bin/bash
# filename: void_dirs_awk.sh
# author: skypp
# description: list void directories of specified directory and its sub directories
# usage: sh ./void_dirs_awk.sh [DIRECTORY]

du $1 | grep 0 | awk '{system("[[ -z $(ls " $2 ") ]]&&echo "$2)}'
[/code:1]
du /root|awk ' ($1==4) {print $2}'

du $1|awk ' ($1==4) {print $2}'

这样不知怎么样啊!
那个grep 后面不应是0吧!应是4吧!
不好意思公司放长假,才回来呵呵
楼上用的是什么Linux啊,我在Cygwin下和SuSe 9.3 X64下查看空目录大小都是0K,不过在RHEL4 AS下看空目录大小是8K
大家看情况使用0、4或者8,可能还有其他大小,哪位大虾指点指点
在个新问题:
如在某目录中只有若干个字节为0的文件或目录,那此目录是否为空目录啊!
因此目录大小还是为0、4或者8.
所以后边还得加点代码用ls探测下有没有空文件,有的话就不算空目录了,看我上面的小程序
ls -ld /path/to/dir/**/*(/^F)

zsh