[原创]列出指定目录及其子目录里的所有空目录
#!/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
同事想列出指定目录包括其子目录里的所有空目录,自个写了一个,不知道这里有没有更好的script :P不错 不错 通常用du来实现好像速度更快一些
#!/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
突然感觉用awk一行就可以实现,请哪位赐教,小弟谢过:) 一不小心成精华贴了,呵呵
这次的是一句话的,效率可能低了点,不过也算是一个实现了
#!/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)}'
:mrgreen: du /root|awk ' ($1==4) {print $2}'
或
du $1|awk ' ($1==4) {print $2}'
这样不知怎么样啊!
那个grep 后面不应是0吧!应是4吧! 不好意思公司放长假,才回来呵呵 :mrgreen:
楼上用的是什么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 :mrgreen:
一语惊醒梦中人,看来得好好学习下zsh了
页:
[1]