Estou tentando descobrir quais arquivos não existem em uma soma de verificação do conteúdo deles. Eu tenho dois diretórios /foo
e /bar
, ambos os diretórios representam estados arbitrários no sistema, eu quero encontrar todos os arquivos na raiz /bar
que não existem na raiz /foo
(recursivamente). Um dicionário de /bar/**
com
CheckSum -> filepath
menos o dicionário de /foo/**
com
CheckSum -> filepath
Eu posso escrever isso usando md5sum ou algo assim, mas já deve haver um utilitário que faça isso.
Só para ficar claro, se dois arquivos são idênticos exceto por localização (nome e caminho), quero que eles sejam identificados como iguais.
Caso de teste
Vamos criar uma árvore com alguns dados de teste,
/tmp/foo
└── myFile (duplicate of /tmp/bar/quz/asdf/otherFileName)
/tmp/bar
├── qaz
│ └── findMe
└── quz
└── asdf
└── otherFileName (duplicate of /tmp/foo/myFile)
Script para criação,
mkdir -p /tmp/foo /tmp/bar/quz/asdf /tmp/bar/qaz
# One file that exists in both locations
dd if=/dev/urandom of=/tmp/foo/myFile bs=1k count=10
cp /tmp/foo/myFile /tmp/bar/quz/asdf/otherFileName
# One file (findMe) that exists in only /mpt/bar/
dd if=/dev/urandom of=/tmp/bar/qaz/findMe bs=1k count=10
Assim, o programa que compara /tmp/foo
e /tmp/bar
deve encontrar /tmp/bar/qaz/findMe