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
时会抛出错误
任务
我需要一个脚本来:
- 在
/home/mail/domains/$domain/Maildir/
中使用此命名模式查找文件夹 ...
- 创建中间文件夹
/home/mail/domains/$domain/../
- Chown
/home/mail/domains/$domain/../
给用户 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/." "." }'`
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
场景
我正在为具有以下结构的数千个域在邮件服务器上切换 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
任务
我需要一个脚本来:
- 在
/home/mail/domains/$domain/Maildir/
中使用此命名模式查找文件夹...
- 创建中间文件夹
/home/mail/domains/$domain/../
- Chown
/home/mail/domains/$domain/../
给用户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/." "." }'`
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