Cat多个源到多个目标

时间:2014-05-30 14:57:57

标签: bash csv cat

我有几台服务器将一些数据记录到.csv文件中并将文件发送到NAS。我需要将每个.csv文件添加到相应的聚合日志文件中。谷歌搜索没有任何相关性(也许我没有使用正确的搜索字符串?)

我现在这样做的方法是使用这样的脚本:

#! /usr/bin/bash

cat a.log a.csv > a.log
cat b.log b.csv > b.log
cat c.log c.csv > c.log
:

如果创建了新的日志记录数据,那么我需要编辑脚本并添加一个新行。

当然,必须能够更轻松,更灵活地完成这项工作。任何提示都表示赞赏。

2 个答案:

答案 0 :(得分:2)

为什么要将a.log的内容转储到a.log中?这似乎毫无意义。

我认为你真的想这样做:

for logfile in *.log; do
    csvfile=${logfile/.log/.csv}
    cat $csvfile >> $logfile
done
我认为,这相当于:

cat a.csv >> a.log
cat b.csv >> b.log
cat c.csv >> c.log
警告:我没有

答案 1 :(得分:0)

假设所有日志文件都具有等效的csv文件

for i in $(ls *.log); do
    logfile=$i
    csvfile=${i/.log/.csv}
    cat $logfile $csvfile > $logfile
done

它基本上要求目录中的日志文件列表。

然后,它'计算'csv文件名

然后它会运行您的命令,但这次会自动为您目录中的每个日志文件。