我有几台服务器将一些数据记录到.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
:
如果创建了新的日志记录数据,那么我需要编辑脚本并添加一个新行。
当然,必须能够更轻松,更灵活地完成这项工作。任何提示都表示赞赏。
答案 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文件名
然后它会运行您的命令,但这次会自动为您目录中的每个日志文件。