之前有人用递归写过,发现不太和自己心意,自己写了一个。
原理是采用find -type d -empty 先检查再删除,由于删除掉空文件夹后,上层也会变空,所以需要循环处理,每次循环都打印删除掉的目录信息。
使用方法 ./del_empty_dir.sh dir_name
#!/bin/bash
# 删除空目录的脚本
dir_name=$1
loop=1
CMD="/usr/bin/find ${dir_name} -type d -empty "
${CMD} > dirlist.txt
while [ $(cat dirlist.txt| wc -l) -gt 0 ]
do
echo ------- Deleted Dir in Loop: ${loop} --------
cat dirlist.txt
${CMD} -exec rm -rf {} \; &>/dev/null
loop=$[loop + 1]
${CMD} > dirlist.txt
done
rm -rf dirlist.txt
发现不在乎提示信息的话,用以下即可
find empty_fold -type d -empty -delete