簡體   English   中英

Bash腳本查找&& mkdir

[英]Bash script to find && mkdir

情境

我要在具有以下結構的數千個域的郵件服務器上切換IMAP客戶端:

郵件文件夾位置: /home/mail/domains (僅作為示例)

domain1.com的 Maildir包含以下文件夾:(僅是示例)

.Sent.2002.May
.Sent.2002.June
.Personal.Home.Jack

domain2.com的 Maildir包含

.Sent.2008.June
.Emails.Test.test2

domain3.com的 Maildir包含

.Sent.2012.Files
.Archive.2014.May

問題:

每當中間文件夾不存在時,我的新IMAP客戶端都會引發錯誤。 例如domain1.com

如果.Sent.2002文件夾不存在,當我嘗試查看.Sent.2002.May時,它將引發錯誤。

任務

我需要一個腳本來:

  1. 使用此命名模式.$1.$2.$3/home/mail/domains/$domain/Maildir/查找文件夾.$1.$2.$3
  2. 創建中間文件夾/home/mail/domains/$domain/.$1.$2/
  3. /home/mail/domains/$domain/.$1.$2/更改為用戶mail

手動對一個域進行了嘗試,IMAP客戶端錯誤消失了。

需要有關腳本的幫助。 在這種情況下,我不確定如何將參數從find轉換為mkdir,因為文件夾名稱總是變化的。

您需要類似:

for i in `find  /home/mail/domains/$domain/Maildir/  -exec basename {} \; ` 
    do
    DIR=`echo $i |  awk -F. '{print "/home/mail/domains/$domain/." $2 "." $3}'` 
    mkdir $DIR
    chown mail $DIR
done

在這里執行它,我得到:

mkdir /home/mail/domains/$domain/.Personal.Home
chown mail /home/mail/domains/$domain/.Personal.Home
mkdir /home/mail/domains/$domain/.Sent.2002
chown mail /home/mail/domains/$domain/.Sent.2002
mkdir /home/mail/domains/$domain/.Sent.2002
chown mail /home/mail/domains/$domain/.Sent.2002

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM