Localiza arquivos em subdiretórios e copia-os para outro diretório com os mesmos subdiretórios?

1

Esta questão é muito semelhante a esta exceto que eu quero manter os subdiretórios originais do arquivo.

Por exemplo, se eu tivesse

/temp/a/a.txt
/temp/a/a.jpg
/temp/a/b.txt
/temp/b/c.txt
/temp/d/d.txt
/temp/d/d.jpg
/temp/d/e.txt
/temp/f.txt

Eu gostaria de copiar todos os arquivos de texto para / temp2 para que a estrutura do diretório se parecesse com:

/temp2/a/a.txt
/temp2/a/a.jpg
/temp2/a/b.txt
/temp2/b/c.txt
/temp2/d/d.txt
/temp2/d/d.jpg
/temp2/d/e.txt
/temp2/f.txt

Obrigado pela sua ajuda !!

    
por evan 18.11.2010 / 01:16

2 respostas

0

Se você quiser replicar toda a estrutura de diretórios, basta cp -a /temp /temp2 if /temp2 ainda não existir ou cd /temp; cp -a . /temp2 se o diretório de destino já existir. ( -a é uma opção específica do Linux para cp ; em outros sistemas, você pode usar cp -Rp para permissões recursivas de preservação de cópias.)

Se você deseja copiar apenas determinados arquivos com base em seus nomes, use rsync . Tem sofisticadas regras de inclusão-exclusão; Escrevi um tutorial para estas regras em resposta a um < href="https://unix.stackexchange.com/q/2161/885"> pergunta perguntando como fazer isso no Unix Stack Exchange .

Se você quiser corresponder os arquivos por meio de outros critérios, como a data, a maneira mais simples é combinar rsync com as regras de correspondência de padrões do zsh, como em A resposta de Marcel Stimberg à questão acima mencionada .

    
por 18.11.2010 / 02:34
0

Sem informações adicionais, a melhor solução que posso sugerir é:

cp -rp temp temp2
    
por 18.11.2010 / 02:32