您好,我正在尝试递归地移除/删除目录及其子目录和文件。我不想使用 rm -r。我想出了以下代码。
function recursive(){
for i in "$1"/*; do
if [ -d $i ];then
echo "FILE $i IS A DIRECTORY"
if [ "$(ls -A $i)" ];then
echo "DIRECTORY IS NOT EMPTY CALLING RECURSIVE AGAIN"
recursive $i
else
echo "DELETE THIS DIRECTORY: ITS EMPTY"
fi
elif [ -e $i ];then
echo "DELETING FILE $i"
else
echo UNKNOWN FILE $(basename $i)
fi
done
}
问题是当我深入研究子目录时,我可以在途中删除它们的文件,但是一旦我到达目录树的底部,我必须删除所有现在为空的目录(也许在我回来的路上起来?)
如果有人能帮助我理解它的逻辑或指导我朝着正确的方向前进,我将不胜感激。
THIS 的答案问题是有道理的,但我不知道如果子目录级别很少怎么办?
最佳答案
我会简单地使用
find "$1" -delete
unlink
可能也是一个不错的想法,但我不确定您是否会考虑作弊 :)
关于bash - 不使用rm命令递归删除目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12631275/