如何管理Unix中不同目的地的报告/文件分发?

时间:2010-01-04 08:29:56

标签: file distribution ksh

报告工具将在文件系统(Unix目录)中生成大量报告/文件。有一个目的地(电子邮件地址和共享文件夹)列表,其中需要在每个目的地分发不同的报告/文件集(可以有重叠)。

想知道是否有办法使用shell脚本有效地管理此报告传递,以便将来维护报告和目标列表不会变得一团糟。

这是一个相当开放的问题,然而,约束是它应该在Unix FS中管理报告的范围内工作。

1 个答案:

答案 0 :(得分:0)

您总是可以创建一个简单的文本文件(此处为report_locations.txt),其中包含报告所在的名称/位置,即

ReportName1;/home/bob
ReportName2;/home/jim,/home/jill
ReportName3;/home/jill,/home/bob

报告名称将始终是此示例中的第一个字段以及相应报告应遵循的位置,以逗号(或您喜欢的任何其他分隔符)分隔。

然后使用shell脚本读取该文件(我喜欢使用for循环进行此类操作):

#!/usr/bin/ksh93
for REPORT in $(cut -d";" -f1 report_locations.txt)
do
        LISTS=$(grep ${REPORT} report_locations.txt | cut -d";" -f2)
        for LIST in ${LISTS}
        do
                DIRS=$(echo ${LIST} | tr ',' '\n')
                for DIR in ${DIRS}
                do
                        echo "Copying ${REPORT} to ${DIR}"
                        cp -f ${REPORT} ${DIR}
                done
        done
done

for循环的使用可能有点过分(我被卷入其中),但它完成了工作。

不确定这是你想要的,但它是一个起点,如果有的话。不要犹豫,询问您是否需要对代码进行任何解释。