使用shell脚本编辑多个目录中的某些文件

时间:2013-07-30 00:19:53

标签: bash shell

我维护多个邮件服务器,每个用户文件夹中都有明文配置文件,具有以下层次结构:

domain.com
->user1
->user2
anotherdomain.com
->user3
->user4

在每个用户的文件夹中都有一个需要编辑的文件。每个文件需要将第一部分更改为以下内容:

#!0 __WebmailJunk__
#if allof (spamtest, not address :all :is "From" "") {
#  fileinto "Junk E-mail";
#  stop;
#}

改为:

#!1 __WebmailJunk__
if spamtest {
fileinto "Junk E-mail";
stop;
}

这假设文件尚未更改。

我想我想出了如何使用以下代码逐个编辑文件:

while read line 
do
    CHARACTER=`echo $line | cut -c 1`
    if [[ $CHARACTER == "}" ]] ;
        then
            exit 0
    fi
    sed -i -e 's/^/#/' <filename>
done

还没弄明白如何解析每个用户目录只有一个文件夹深度来编辑文件。有问题的服务器正在运行CentOS 6.4。

1 个答案:

答案 0 :(得分:0)

您可以使用find来匹配用户文件吗? e.g。

find ./ -maxdepth 1 -name "user*" -exec script_that_does_text_replace.sh {\} \;

其中script_that_does_text_replace.sh是您在上面编写的代码。