
Tenho fotos, na pasta A, elas também existem, nas pastas B e C. Elas têm os mesmos nomes de arquivos. Como procurá-los e excluí-los da pasta A? Um script perl ou algo assim seria ideal, pois não gosto de baixar um software para esta tarefa.
Responder1
Experimente este comando:
find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec echo mv -v "$destdir/{}" "$ToDelete"/ \;
Como usar?
Passo 1:Crie um diretório temporário para mover arquivos duplicados para ele:
ToDelete=/tmp/ToDelete; mkdir -p "$ToDelete"
Passo 2:Defina destdir
para o diretório FolderA que queremos excluir fotos duplicadas de lá.
destdir=/path/to/FolderA
etapa 3cd para seu primeiro diretório de origem (FolderB) e execute o comando
cd /path/to/FolderB
find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec echo mv -v "$destdir/{}" "$ToDelete"/ \;
Passo 4:Agora vá para o próximo diretório de origem (FolderC) e execute novamente o comando
cd /path/to/FolderC
find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec echo mv -v "$destdir/{}" "$ToDelete"/ \;
OK. Agora, se você testar o comando e ver o resultado, remova o echo
comando para mover as fotos duplicadas para /tmp/ToDelete
o diretório.
Veja o teste abaixo:
$ ls ~/FolderA
1.jpg 2.jpg 6.jpg 7.jpg 8.jpg
$ ls ~/FolderB
3.jpg 4.jpg 5.jpg 7.jpg 8.jpg 9.jpg
$ ls ~/FolderC
6.jpg 7.jpg 8.jpg 9.jpg
$ ToDelete=/tmp/ToDelete; mkdir -p "$ToDelete"
$ ls /tmp/ToDelete/
$ destdir=~/FolderA
$ cd ~/FolderB
/FolderB$ find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec mv -v "$destdir/{}" "$ToDelete"/ \;
‘/home/Fischer/FolderA/./8.jpg’ -> ‘/tmp/ToDelete/8.jpg’
removed ‘/home/Fischer/FolderA/./8.jpg’
‘/home/Fischer/FolderA/./7.jpg’ -> ‘/tmp/ToDelete/7.jpg’
removed ‘/home/Fischer/FolderA/./7.jpg’
/FolderB$ cd ~/FolderC
/FolderC$ find . -type f -exec cmp -s '{}' "$destdir/{}" \; -exec mv -v "$destdir/{}" "$ToDelete"/ \;
‘/home/Fischer/FolderA/./6.jpg’ -> ‘/tmp/ToDelete/6.jpg’
removed ‘/home/Fischer/FolderA/./6.jpg’
/FolderC$ ls /tmp/ToDelete/
6.jpg 7.jpg 8.jpg
/FolderC$ ls -l ~/FolderA
1.jpg 2.jpg
/FolderC$ C00L ;)
E como funciona?
Quando você muda para sua PastaB ou PastaC e executacomando encontrar, então você está procurando por qualquer arquivo nele ( .
consulte o diretório atual) e depois comcomando cmp(usado para comparar dois arquivos byte por byte) você compara cada arquivo ( {}
) na Pasta B / Pasta C com os arquivos na destdir
(Pasta A ( $destdir/{}
)) se eles forem iguais, movemos esse arquivo (da Pasta A para o diretório temporário em /tmp/ToDelete
) com o próximocomando mv -exec mv "$destdir/{}" "$ToDelete"/ \;
.
Responder2
O programaencontrar imagemdupesdeve fazer o que você solicita:
Encontra imagens visualmente semelhantes ou duplicadas
O programa é um programa Perl simples e pode ser iniciado a partir da linha de comando - mas também está disponível como um pacote de software.
Responder3
você poderia usar o programa fslint
ele procura duplicatas (entre outras coisas)
fslint pode ser baixado no centro de software. fslint possui uma interface de usuário quando você abre o programa, a primeira aba é sobre como encontrar duplicatas. você pode especificar a pasta/pastas.
Mais Informações :manual do usuário fslint
Responder4
Existem muitoslocalizador de fotos duplicadasutilitários disponíveis online. Alguns são melhores que outros, alguns são mais rápidos, alguns são fáceis de usar, muitos são gratuitos e alguns precisam pagar para desbloquear todas as funcionalidades.
Faça uma pesquisa no Google com as melhores frases de localização de fotos duplicadas para descobrir o que está disponível e encontrar aquela que atende às suas necessidades.