File 如何在Unix中管理到不同目标的报告/文件分发?

File 如何在Unix中管理到不同目标的报告/文件分发?,file,distribution,ksh,File,Distribution,Ksh,报告工具将在文件系统(Unix目录)中生成大量报告/文件。有一个目的地列表(电子邮件地址和共享文件夹),其中需要在每个目的地分发一组不同的报告/文件(可能有重叠) 我想知道是否有一种方法可以使用shell脚本高效地管理此报告交付,从而使报告和目标列表的维护在将来不会变得一团糟 这是一个非常开放的问题,但约束条件是,它应该在Unix FS中管理报表的范围内工作。您始终可以创建一个简单的文本文件(此处为report_locations.txt),其中包含报表所在的名称/位置,即 ReportName

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

我想知道是否有一种方法可以使用shell脚本高效地管理此报告交付,从而使报告和目标列表的维护在将来不会变得一团糟


这是一个非常开放的问题,但约束条件是,它应该在Unix FS中管理报表的范围内工作。

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

ReportName1;/home/bob
ReportName2;/home/jim,/home/jill
ReportName3;/home/jill,/home/bob
报告名称将始终是本例中的第一个字段,以及相应报告应跟随的位置,并用逗号(或您喜欢的任何其他分隔符)分隔

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

使用
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