Combine vários arquivos em um único arquivo, acrescente a parte de cada nome de arquivo

0

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.

    
por Steve 21.03.2018 / 20:16

2 respostas

3

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.

    
por 21.03.2018 / 20:40
0

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
    
por 21.03.2018 / 20:43