![](/img/trans.png)
[英]Mkdir working for one folder but not the other in a bash script?
[英]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.$2.$3
在/home/mail/domains/$domain/Maildir/
查找文件夾.$1.$2.$3
/home/mail/domains/$domain/.$1.$2/
/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.