Как использовать скрипт bash для структуры каталогов? - PullRequest
0 голосов
/ 04 февраля 2020

Краткое описание: Я пытаюсь создать структуру каталогов, используя Automator для ma c Скриншот Automator и используя этот bash скрипт

mkdir -p "$1/$2/Client_Name_Social_Media/01_January_2020/Design/Deliverables"

Проблема: Мне нужно добавить Client_name перед каждым именем каталога. У меня много клиентов, и я не хочу тратить свое время на переименование каталогов.

Окончательная структура каталогов:

  • Client_Name
    • Client_Name_Social_Media
      • Client_Name_Month
        • Client_Name_Calendars
        • Client_Name_Design
          • Client_Name_OpenFiles
          • Client_Name_Deli

    Заранее спасибо

Ответы [ 3 ]

1 голос
/ 04 февраля 2020

Вы можете хранить имена клиентов в массиве и перебирать их в al oop для создания каталогов. В вашем примере, чтобы создать каталоги до Client_Name_Month с именами клиентов Client1, SomeClient2, C3, вы можете использовать:

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
0 голосов
/ 12 февраля 2020

Итак, это решило мою проблему:

DIR="$1"
CLIENT="$2"
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
0 голосов
/ 06 февраля 2020

Аналогично созданию с нуля каталогов для нового списка клиентов, который хранится в clnames @GoodDeeds, ответьте на соответствующий кли 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 "$0" "${0//ClientName_/JohnSmith_}"' {} \;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...