Bash: emparelhe duas séries de arquivos

3

Eu tenho vários arquivos com esse padrão:

file1_foo.ext
file1_bar.ext
file2_foo.ext
file2_bar.ext

e assim por diante.

Eu preciso "emparelhá-los" e colocá-los em um arquivo como este

file1_foo.txt    file1_bar.txt

(separador separado)

Qual é o melhor curso de ação neste caso?

    
por Einar 03.04.2013 / 10:49

1 resposta

6

Eu assumo que você não quer apenas assumir que ambos existem. Isso só imprimirá as linhas se elas existirem.

for file1 in *_foo.ext; do
    file2="${file1%foo.ext}bar.ext"
    if [[ -e "$file2" ]]; then
        printf '%s\t%s\n' "$file1" "$file2"
    fi
done

Amostra:

$ tee {1,2,3}_foo.ext {1,3,4}_bar.ext </dev/null >/dev/null
$ ./script
1_foo.ext   1_bar.ext
3_foo.ext   3_bar.ext
    
por 03.04.2013 / 10:53