将多个文件合并为单个文件,附加每个文件名的一部分

将多个文件合并为单个文件,附加每个文件名的一部分

我有几百个文件,每个文件都包含一个数字条目(例如5243564:)。每个文件名都有一个标识符(FT、FM、FA 等)和日期(例如:FT.20180315.txt)。

我想将唯一标识符文件及其编号条目合并到一个文件中,并附带日期。因此,单个 FT 文件如下所示:

20180315 5243564
20180316 1234566

ETC

这样就可以做到:cat *FT* > FT.txt.

但这不会带来每个文件的日期。

答案1

一句话awk就可以完成工作。

awk '{ printf("%s %s\n", substr(FILENAME, 4, 8), $0); }' FT.*.txt > FT.txt

我根据你提供的例子进行了测试。根据需要进行调整。

答案2

这是一个简单的脚本,可以满足您的需要。它很简约,但显示了基本步骤。我们假设这个脚本被称为:combine.sh

#!/bin/sh

#Add logic for better parsing of args.
IDENT=$1
SEARCHDIR=$2

# For each file in the Search Directory
# that starts with the Unique Identifier...
for f in "$SEARCHDIR/$IDENT"*; do

   datestr=$(echo "$f" | cut -d '.' -f2)
   value=$(cat "$f")
   echo "$datestr $value"
done

然后你可以简单地这样做:

$> combine.sh FT /path/to/my/datadir > FT.txt

相关内容