Substituindo arquivos diferentes de pastas diferentes

0

Ele todo mundo,

Não consegui encontrar uma resposta para a minha pergunta, então aqui vai:

Eu quero fazer um "job" que substitua / distribua mais de 10.000 arquivos PDF de um diretório para uma única pasta onde o "mesmo" PDF (somente o nome do PDF é o mesmo) já está.

Exemplo: diretórios com mais de 10000 arquivos PDF = / my_dir / backup há 10000+ PDFs aleatórios, como 143079.pdf , 493857.pdf e 888675.pdf

O "trabalho" precisa procurar a pasta em que o 143079.pdf já está, por exemplo: está localizado em /os_dir/pdf/EDFR_29384_euendho e o substitui. Assim, o "trabalho" verá /my_dir/backup/143079.pdf e iniciará a pesquisa na pasta em /os_dir/pdf/ e a encontrará em /os_dir/pdf/EDFR_29384_euendho/ . Ele precisa substituir 143079.pdf em /os_dir/pdf/EDFR_29384_euendho/ com 143079.pdf de /my_dir/backup/ . Ele tem que fazer isso 10000 + vezes com todos os PDFs aleatórios e todas as pastas aleatórias.

Qual é a melhor maneira de fazer isso?

    
por John D 21.03.2018 / 09:42

1 resposta

1

Solução

find + bash :

find . -type f -name "*.pdf" -exec bash -c \
'p="/my_dir/backup/"; bn=${1##*/}; 
 [[ "$1" != $p* ]] && [[ -f "${p}$bn" ]] && cp "${p}$bn" "$1"' _ {} \;
  • p="/my_dir/backup/" - caminho para o diretório inicial (crucial)
  • bn=${1##*/} - nome de base do arquivo
por 21.03.2018 / 10:17