Um awk
one-liner deve realizar o trabalho.
awk '{ printf("%s %s\n", substr(FILENAME, 4, 8), $0); }' FT.*.txt > FT.txt
Eu testei nos exemplos que você forneceu. Ajuste conforme necessário.
Eu tenho algumas centenas de arquivos que contêm uma única entrada numérica (ex: 5243564
). Cada nome de arquivo tem um identificador (FT, FM, FA, etc) e uma data (ex: FT.20180315.txt
).
Gostaria de combinar arquivos identificadores exclusivos e sua entrada numérica em um único arquivo E trazer a data com ele. Então, um único arquivo FT seria parecido com:
20180315 5243564
20180316 1234566
etc
Isso faria isso: cat *FT* > FT.txt
.
Mas isso não trará a data de cada arquivo.
Aqui está um script simples, que faria o que você precisa. É minimalista, mas mostra os passos básicos. Vamos supor que esse script seja chamado: 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
Então você pode simplesmente fazer:
$> combine.sh FT /path/to/my/datadir > FT.txt
Tags text-processing cat