如何使用 bash 脚本来构建目录结构?

How to use the bash script for directory structure?

简介: 我正在尝试在 mac Automator screenshot 上使用 Automator 创建目录结构 并使用这个 bash 脚本

mkdir -p "//Client_Name_Social_Media/01_January_2020/Design/Deliverables"

问题: 我需要在每个目录名称前添加 Client_name。我有很多客户,我不想浪费时间重命名目录。

最终目录结构:

提前致谢

您可以将客户端名称存储在一个数组中,然后循环遍历它们以创建目录。在您的示例中,要使用客户端名称 Client1SomeClient2C3 创建最多 Client_Name_Month 的目录,您可以使用:

for clname in {"Client1", "SomeClient2", "C3"}
do
    mkdir -p "${cln}/${cln}_Social_Media/${cln}_Month"
done

这将创建目录:

Client1/Client1_Social_Media/Client1_Month
SomeClient2/SomeClient2_Social_Media/SomeClient2_Month
C3/C3_Social_Media/C3_Month

类似于从头开始为存储在 clnames 中的新客户列表创建目录@GoodDeeds 回答适当的 cli bash 答案将是:

clnames=("Client1" "SomeClient2" "C3")
for cln in "${clnames[@]}"; do
   mkdir -p "./${cln}/${cln}_Social_Media/${cln}_Month/${cln}_Calendars"
   mkdir -p "./${cln}/${cln}_Social_Media/${cln}_Month/${cln}_Design/${cln}_OpenFiles"
   mkdir -p "./${cln}/${cln}_Social_Media/${cln}_Month/${cln}_Design/${cln}_Deliverables"
   mkdir -p "./${cln}/${cln}_Social_Media/${cln}_Month/${cln}_Campaigns"
done

注意:这不能直接在您编写的自动化程序脚本中运行。

如果您需要将名为 ClientName 的现有客户的目录结构递归重命名为 JohnSmith,它可能看起来像这样

find . -depth -name 'ClientName_*' -execdir bash -c 'mv "[=11=]" "${0//ClientName_/JohnSmith_}"' {} \;

所以这解决了我的问题:

DIR=""
CLIENT=""
TMONTH="$(date -j +%d_%B_%Y)"

mkdir -p ${DIR}/${CLIENT}/${CLIENT}_Social_Media/${CLIENT}_${TMONTH}/${CLIENT}_Calendars
mkdir -p ${DIR}/${CLIENT}/${CLIENT}_Social_Media/${CLIENT}_${TMONTH}/${CLIENT}_Design/${CLIENT}_OpenFiles
mkdir -p ${DIR}/${CLIENT}/${CLIENT}_Social_Media/${CLIENT}_${TMONTH}/${CLIENT}_Design/${CLIENT}_Deliverables
mkdir -p ${DIR}/${CLIENT}/${CLIENT}_Campaigns