bash - 不使用rm命令递归删除目录

标签 bash shell unix recursion

您好,我正在尝试递归地移除/删除目录及其子目录和文件。我不想使用 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/

相关文章:

php - 将 exec 与 PHP 一起使用是一种好习惯吗?

android - 如何处理android手机中的串口?

bash - 打印与用户名关联的名称和主目录路径

java - 在 Linux (Ubuntu) 中在 java 7 和 java 8 之间切换的推荐方法是什么?

linux - jar 的可执行 shell 脚本

linux - 如何在 unix 中处理同一文件中的嵌套分隔符

c - 读取/接收线程安全 (MSG_PEEK)

linux - 在脚本中启动 shell

linux - Bash - 比较 2 个文件列表及其 md5 校验和

Linux Shell 脚本,用于提取已发送电子邮件的数据并将邮件发回给管理员