Como concatenar arquivos usando a parte inicial do nome do arquivo

0

Eu tenho muitos arquivos com nomes no formulário

username_pattern_suffix.ext  

onde "pattern" é fixo, mas existem muitos nomes de usuário, cada um com vários arquivos (ou seja, valores de 'sufixo'). Eu gostaria de concatenar os arquivos de cada usuário em um único arquivo, por exemplo,

username.ext

para terminar com um arquivo por nome de usuário. Cada nome de usuário contém dois sublinhados _ e termina com um número, mas é de tamanho variável.

    
por Mark 22.01.2016 / 19:59

2 respostas

1

Dependendo de quantos arquivos você pode fazer algo como:

for pat in *_pattern_*; do
    cat -- "$pat" >> "${pat%%_pattern_*}".ext
done

isso fará um loop em todos os arquivos nesse diretório que contêm _pattern_ e cat o conteúdo de cada um acrescentado a um arquivo cujo nome é tudo antes de _pattern_ aparecer na sequência e, em seguida, adicionar a extensão .ext .

Se houver muitos arquivos, isso não funcionará

    
por 22.01.2016 / 20:13
1
cat username_pattern_* > username.ext

isto irá concatenar arquivos em ordem alfabética ou alfanumérica da porção do sufixo

a menos que o username_pattern não esteja em um formato uniforme, ou seja, comprimento fixo ou delimitado por um caractere especial, deve ser muito fácil extrair o username_pattern dos nomes de arquivos usando cut ou awk e executá-los através de um loop for . Não sabendo o padrão exato, é muito difícil adivinhar a ação específica.

    
por 22.01.2016 / 20:03

Tags