Como usar o comando paste para muitos arquivos cujos nomes não são números? (cole colunas de cada arquivo em um arquivo)

1

Para colar muitos arquivos, cujos nomes são números incrementais:

paste {1..8}| column -s $'\t' -t
  • E se seus arquivos não forem nomeados por número, mas apenas por palavras?
  • Pode ter até dez arquivos, o que devo fazer?

Além disso, você tem uma lista de arquivos que contém todos os arquivos que você deseja.

Até agora, minha abordagem é:

mkdir paste
j=0; while read i; do let j+=1; cp $i/ paste/$j; done<list;
cd paste; paste {1..8}| column -s $'\t' -t

Eu não tenho nenhum problema com essa abordagem, só quero perguntar se há alguma mais curta.

Na verdade, meus arquivos têm o mesmo nome, apenas em locais diferentes, por exemplo, 1MUI/PQR/A/sum, 2QHK/PQR/A/sum, 2RKF/PQR/A/sum . O comando paste deve ser paste {list}/PQR/A/sum . O arquivo da lista é:

1MUI
2QHK
2RKF
...
    
por Ooker 09.07.2014 / 18:25

2 respostas

2

com bash 4

mapfile -t <list
paste "${MAPFILE[@]}" | column -s $'\t' -t

para a versão paste {list}/PQR/A/sum da pergunta

mapfile -t <list
paste "${MAPFILE[@]/%//PQR/A/sum}" | column -s $'\t' -t    
    
por 09.07.2014 / 18:39
0

Se todos os seus arquivos estiverem no diretório único, use:

paste * | column -s $'\t' -t

Se você tiver um arquivo de lista contendo todos os arquivos e cada nome de arquivo em uma linha, não tiver caracteres especiais como espaço, tente:

paste $(printf "%s " $(cat list)) | column -s $'\t' -t

Atualizado

Com suas informações atualizadas, você pode tentar:

paste */PQR/A/sum | column -s $'\t' -t

Se o seu diretório pai contiver muitos arquivos e diretório que você não precisa, você deve listar explicitamente todos os seus diretórios:

paste {1MUI,2QHK,2RKF,...}/PQR/A/sum | column -s $'\t' -t
    
por 09.07.2014 / 18:35