bash - 如何使用 Bash 递归地创建不存在的子目录?

标签 bash shell recursion subdirectory

我正在创建一个快速备份脚本,它将一些数据库转储到一个漂亮/整洁的目录结构中,我意识到我需要测试以确保在创建目录之前存在这些目录。我的代码有效,但有更好的方法吗?

[ -d "$BACKUP_DIR" ] || mkdir "$BACKUP_DIR"
[ -d "$BACKUP_DIR/$client" ] || mkdir "$BACKUP_DIR/$client"
[ -d "$BACKUP_DIR/$client/$year" ] || mkdir "$BACKUP_DIR/$client/$year"
[ -d "$BACKUP_DIR/$client/$year/$month" ] || mkdir "$BACKUP_DIR/$client/$year/$month"
[ -d "$BACKUP_DIR/$client/$year/$month/$day" ] || mkdir "$BACKUP_DIR/$client/$year/$month/$day"

最佳答案

可以使用-p参数,即documented as :

-p, --parents

no error if existing, make parent directories as needed

所以:

mkdir -p "$BACKUP_DIR/$client/$year/$month/$day"

关于bash - 如何使用 Bash 递归地创建不存在的子目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1731767/

相关文章:

java - Java 函数的递归版本在第一次调用时比迭代慢,但在调用之后更快。为什么是这样?

linux - 尽管端口忙于第一个实例,但多个服务实例正在使用 tomcat 开始

c - C中的递归有什么问题

java - 带有 Tomcat 的 Dockerfile : "exec: catalina.sh" no such file or directory

linux - 在 Ubuntu : I can not change files and get "file can not be found" even though the file exists?

bash - shell脚本中自动应答ssh-copy-id

linux - 运行 shell 脚本以在日志中附加日期的基本 Cron 作业,不起作用

python - 在Python中生成列表长度k的所有排列的递归算法

linux - 打破循环的 Bash 函数

xml - 如何使用 SED (linux) 从 XML 文件中删除 CDATA