查找所有不包含匹配子目录的目录并创建它们

查找所有不包含匹配子目录的目录并创建它们

我有以下目录结构:

/media/storage/sqlbackup/CUSTOMER1
/media/storage/sqlbackup/CUSTOMER2
...
/media/storage/sqlbackup/CUSTOMER*

CUSTOMER*目录可能包含名为dailyweekly和 的子目录monthly。如果CUSTOMER*目录不包含dailyOR weeklyOR monthly,我希望创建它,如果包含,那么我希望保留它。

前: CUSTOMER1/daily

后: CUSTOMER1/{daily,weekly,monthly}

我试图通过巧妙地使用 find 来做到这一点,但试图返回所有不匹配的内容。

答案1

您可以创建目录,同时隐藏与已存在的目录相关的任何错误:

for custDir in /media/storage/sqlbackup/CUSTOMER*
do
    mkdir -p "$custDir"/{daily,weekly,monthly}
done

您不能使用,/media/storage/sqlbackup/CUSTOMER*/{daily,weekly,monthly}因为{...}序列在通配符之前展开,并且通配符模式只会匹配存在的文件/目录。

相关内容