我有一个每小时运行一次的脚本,我按如下方式存储故障数据:
2017/10/09/00/RetryFailure.txt
2017/10/09/01/RetryFailure.txt
2017/10/09/02/RetryFailure.txt ...
其中10是月份,09是白天,00,01,02是小时。现在在一天结束时,我想将所有(24)RetryFailure.txt连接到一个文件中,说RetryFailure10.txt。
谁能告诉我这样做的命令?
答案 0 :(得分:2)
您可以使用此find
汇总同一日期的所有文件:
find . -name 'RetryFailure.txt' -exec bash -c \
'IFS=/ read -ra arr <<< "$1"; cat "$1" >> "RetryFailure${arr[2]}.txt"' - {} \;
为了获得更好的性能,请使用带有进程替换的循环:
while IFS= read -rd '' file; do
IFS=/ read -ra arr <<< "$file"
cat "$file" >> "RetryFailure${arr[2]}.txt"
done < <(find . -name 'RetryFailure.txt' -print0)
find
我们找到每个RetryFailure.txt
文件read -ra
和IFS=/
我们将每个条目拆分为/
并填充shell数组cat ...
命令,我们使用${arr[2]}
答案 1 :(得分:1)
cat 2017/10/*/RetryFailure.txt > concat_file
或更具限制性的
cat 2017/10/{00..23}/RetryFailure.txt > concat_file
答案 2 :(得分:1)
简短 find
+ cat
方法:
find . -type f -name RetryFailure.txt -exec cat {} + > RetryFailure_merged.txt