Como posso copiar e renomear arquivos com o mesmo nome de arquivo

0

Eu tenho uma estrutura de diretório que contém vários arquivos que são nomeados da mesma forma que em:   dir1 / test   dir2 / test   dir3 / test Eu quero encontrar cada arquivo de teste e copiá-lo para outro diretório com um nome de arquivo exclusivo (arbitrário) para que eu possa analisar os dados que eles contêm. Poderia haver um grande número desses arquivos com nomes semelhantes continha várias camadas na estrutura do diretório. Eu posso usar find para localizar os arquivos, mas a renomeação (usando find) está me aludindo. Alguém pode fornecer orientação sobre este assunto?

    
por Charles 09.07.2015 / 18:24

2 respostas

1

  • source_dir é o formulário do diretório raiz em que você deseja pesquisar os arquivos.
  • destination_dir é o diretório de destino para onde você deseja copiar ou mover seus arquivos
  • *. doc é o nome do arquivo ou padrão de arquivo a ser pesquisado.

Você pode copiar arquivos com o seguinte comando! observe que --backup=numbered criará um arquivo com sufixo aumentado numericamente se o arquivo com esse nome já estiver no diretório de destino.

find /source_dir -type f -name *.doc | xargs -I '{}' cp --backup=numbered {} /destination_dir

Você pode mover arquivos com o seguinte comando! observe que --backup=t criará um arquivo com sufixo aumentado numericamente se o arquivo com esse nome já estiver no diretório de destino.

find /source_dir -type f -name *.doc | xargs -I '{}' mv --backup=t {} /destination_dir

Você também pode considerar o uso desses comandos com o sudo se tiver em arquivos de destino de pesquisa correspondentes a outro usuário.

Se você quiser uma saída detalhada desses comandos, adicione add -v após --backup=numbered ou --backup=t .

    
por 09.11.2015 / 16:00
0

Você pode substituir / no caminho por outro caractere e usá-lo como novo nome de arquivo:

#!/bin/bash
for f in /dir*/*
do
    cp "$f" "${f//\//.}"
done
    
por 09.07.2015 / 18:37

Tags