我有几百个文件,每个文件都包含一个数字条目(例如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