Como copiar arquivos de vários diretórios? [duplicado]

3

Eu tenho um monte de arquivos de texto em vários diretórios que eu quero copiar para outro. O que posso fazer, em vez de entrar em cada diretório e cp *.txt neste diretório?

    
por bigTree 07.09.2013 / 21:40

1 resposta

8

Se nenhuma das respostas nos tópicos relacionados for o que você está procurando, considere usar o comando find , que pesquisará os diretórios recursivamente para baixo a partir de um determinado pai. Você pode especificar uma ação exec para executar em cada um dos arquivos correspondentes que encontrar - nesse caso, você deseja executar um cp em um novo diretório de destino

find /path/to/parent -name '*.txt' -exec cp -t /path/to/newdir {} +

O {} é substituído pelos arquivos que ele localiza e o + no final faz com que ele os agrupe de forma a não estourar o número máximo de argumentos que cp pode manipular em um comando. O newdir já deve existir.

Como você está movendo arquivos de vários lugares para um lugar, existe a possibilidade de alguns nomes não serem exclusivos e, portanto, você pode querer evitar que uma cópia anterior seja sobrescrita por uma cópia posterior. pode fazer isso adicionando uma opção backup

find /path/to/parent -name '*.txt' -exec cp --backup=numbered -t /path/to/newdir {} +

que adicionará um sufixo numerado simples a cada arquivo duplicado. Você pode adicionar um sinal -v ou --verbose ao cp se quiser ver um relatório em execução dos arquivos conforme eles são copiados.

    
por steeldriver 07.09.2013 / 22:42