Simultaneamente move arquivos de lista longa para novo local

2

Estou usando um programa maravilhoso chamado ExifTool para renomear recursivamente um grande lote de arquivos.

Aqui está o uso de exemplo:

$ exiftool -r -ext JPG '-FileName<CreateDate' -d %Y%m%d_%H%M%S.jpg .
Error: './folder1/110310_135433.jpg' already exists - ./folder1/source.jpg
Warning: No writable tags found - ./folder2/110404_095111.jpg
   68 directories scanned
 1650 image files updated
    5 image files unchanged
    2 files weren't updated due to errors

Ao processar lotes muito grandes de imagens, o número de arquivos não atualizados devido a erros geralmente é na casa das centenas, portanto, mover cada arquivo individualmente com mv está fora de questão.

Gostaria de mover simultaneamente os arquivos com erros / avisos para um diretório separado para processamento adicional.

Eu preciso extrair os caminhos dos arquivos problemáticos da saída do terminal e movê-los juntos, mas não tenho certeza de como conseguir isso.

Como eu faria isso?

Por que vale a pena, estou usando o Ubuntu 11.10.

    
por unpossible 05.02.2012 / 18:32

2 respostas

3

Isso extrairá os nomes dos arquivos dos erros / avisos de exiftool e criará uma árvore de diretórios de réplica na pasta "não processada" com apenas esses arquivos. Não tente apenas movê-los em um único diretório para evitar o risco de sobrescrever arquivos com o mesmo nome, mas com diretórios de origem diferentes.

exiftool ... 2>&1 | tee exiftool.log | egrep '^(Error|Warning)' | \
    sed 's/^Error: .* already exists - //;s/^Warning: .* - //' | \
        while IFS= read -r img; do
            rsync -vR -- "$img" unprocessed/
            #rm -v -- "$img"
        done

A parte sed leva em conta apenas a saída do exemplo fornecido, não estou familiarizado com a ferramenta e suas possíveis mensagens de saída.

EDIT: A parte rm está comentada porque é melhor você tentar primeiro.

    
por 05.02.2012 / 23:18
0

A solução ExifTool é adicionar% c ao nome do arquivo (ou %% c no argumento -d). Isso fará com que um número de cópia seja adicionado aos arquivos com nomes duplicados.

    
por 27.02.2014 / 13:53