Removendo arquivos duplicados, mas ignorando certas linhas (por exemplo, timestamp incorporado)

4

Eu tenho um monte de arquivos de texto gzipped. Eu estou tentando remover arquivos duplicados (usando fdupes ), mas o problema é que esses arquivos contêm uma linha que tem seu timestamp neles e os arquivos são idênticos caso contrário.

Eu gostaria de encontrar duplicatas, ignorando esta linha, mas não remover a linha dos arquivos que eu guardo.

No meu caso, a linha é da seguinte forma:

-- Dump completed on 2014-07-12 10:00:01

Neste momento estou usando o seguinte script, que funciona, mas remove a linha de timestamp dos arquivos mantidos:

#!/bin/sh

# Remove timestamp line from all gzipped text files by temporarily unzipping
# them, removing the line then rezipping. Preserve file system timestamp.
for a in *.sql.gz ; do
    gunzip -c $a | sed -e 's/^-- Dump completed.*//g' | gzip -c -9 > temp.gz
    touch -r $a temp.gz
    mv temp.gz $a
done

# Duplicates can now be removed.
fdupes . -dN

Eu quero encontrar uma solução que não envolva modificar os arquivos originais, deixando a linha de timestamp.

Existe alguma maneira de fazer isso?

    
por Jason C 12.07.2014 / 18:26

0 respostas