Localizando dois arquivos com alguns números comuns entre vários arquivos

0

Eu tenho muitos exemplos de arquivos: RT_1.txt, RT_2.txt, .... e RT_1000.txt e também outros arquivos como: EU_1.txt, EU_2.txt, ..... e EU_1000.txt .

Eu preciso usar o loop para colocar cada dois arquivos com o mesmo número (como: RT_1.txt e EU_1.txt) em um diretório. Eu sou grato se alguém me responder.

    
por NNN 02.01.2018 / 17:27

1 resposta

2

Supondo que você queira mover os arquivos mesmo que apenas um deles exista, e assumindo também que o nome do diretório de destino é o próprio número:

for n in {1..1000}; do
    mkdir TARGET_$n
    mv -f {RT,EU}_$n.txt TARGET_$n/
done

Se você quiser mover arquivos somente se ambos existirem, use

for n in {1..1000}; do
    [ -e RT_$n.txt ] && [ -e EU_$n.txt ] && \
        mkdir TARGET_$n && mv -f {RT,EU}_$n.txt TARGET_$n/
done

em vez disso.

Ambas as soluções usam a construção {1..1000} para gerar uma lista de números e, em seguida, processar os arquivos correspondentes. O primeiro bloco pode lançar mensagens de erro se um arquivo não existir (porque ele não verifica se existe um arquivo com um nome específico), o segundo testa a existência antes de criar a pasta de destino e mover os arquivos para lá. .

    
por 02.01.2018 / 17:32

Tags