在 Linux 中递归删除、保留目录

在 Linux 中递归删除、保留目录

在 Linux 命令行中可以 -无需提示- 递归删除文件(类似rm -r [path]),但保留下的目录[path]

编辑: 对于那些感兴趣的人,我使用了下面 Paul 的回答来构建这个方便的脚本,供我的 Makefile 中使用(将 $(DIRS) 替换为要清理的路径 - 例如 bin 和 build 目录):

clean:
    @if [ $$(find bin -type f | wc -l) -gt 0 ]; \
    then { \
        echo "The following will be deleted:"; \
        echo "------------------------------"; \
        find $(DIRS) -type f; \
        echo "------------------------------"; \
        read -p "Continue (y/n)? " -n 1 -r CONTINUE; \
        echo; \
    }; \
    else echo "No files to delete."; \
    fi; \
    \
    if [[ $$CONTINUE =~ ^[Yy]$$ ]]; \
    then find $(DIRS) -type f -delete; \
    fi;

答案1

是的,你可以使用find

find [path] -type f -delete

先运行它而不删除它以确保它针对正确的文件。 type f意味着只查找文件,而不是目录。

相关内容