Gere um arquivo .md5 separado para cada arquivo em um diretório, enquanto SKIPPING os existentes

0

Eu tenho digamos 4 TB de milhões de arquivos. Eu acho que se eu puder produzir um único .md5 para cada arquivo, seria legal.

Eu leio Gere um arquivo .md5 separado para cada arquivo .fastq em um diretório? e modificado para fazer com que ele produza um .md5 individual para CADA arquivo individual.

diga: encontrar . -type f -name "*" -exec sh -c "md5sum {} > {} .md5" \;

Mas, como eu digo, tenho 4 TB de milhões de arquivos o comando pode não terminar em 2 dias e eu tenho que desligar o PC.

quando retomar, desejo que o comando acima pule os arquivos que já tem arquivos .md5 existentes (ou seja, aqueles calculados).

Como fazer isso? recursivamente, é claro.

obrigado.

    
por charles chan 03.06.2018 / 04:38

1 resposta

0

Em vez de criar um arquivo .md5 por arquivo ("milhões de arquivos"), usando milhões de clusters de disco e milhões de inodes, coloque .md5 assinaturas para todos os arquivos em um arquivo grande (que você pode dividir mais tarde, se desejar) (leia man find;man xargs ):

find . -type f \! -name '*.md5' -print0 | xargs -0 md5sum > md5sum.out
#   Separate filenames with 
find . -type f \! -name '*.md5' -print0 | xargs -0 md5sum > md5sum.out
#   Separate filenames with %pre%0^^^^^^^          ^ in case some have spaces
#              ^^^^^^^^^^^^^^^^ but NOT *.md5 files
#      ^^^^^^^ each file
0^^^^^^^ ^ in case some have spaces # ^^^^^^^^^^^^^^^^ but NOT *.md5 files # ^^^^^^^ each file
    
por waltinator 03.06.2018 / 10:37

Tags