Como posso pesquisar dois diretórios por arquivos com o mesmo nome, tamanho, tipo... e removê-los de um desses diretórios?
relate perguntas
-
Subtraindo a mesma coluna entre duas linhas no awk
-
Um script que imprime as linhas de um arquivo com seu comprimento [fechado]
-
exportar variáveis env programaticamente, via stdout do comando [duplicado]
-
Dividir por delimitador e concatenar problema de string
-
MySQL Select com função IN () com array bash
Usando
fdupes
:fdupes
não testará o nome ou o tipo de arquivo, mas testará o tamanho e o conteúdo do arquivo (que implicitamente inclui o tipo de arquivo).Exemplo:
Tomei exemplo de 2 diretórios p1 e p2
Primeiro, salvarei a saída dos nomes dos arquivos dos diretórios p1 e p2 em 2 arquivos de saída
Agora vou encontrar os nomes de arquivos comuns em ambos os diretórios e excluir em um dos diretórios. Desejo que você exclua os arquivos duplicados em /root/p1 e mantenha os arquivos em /root/p2
Testado e funcionou bem
Eu sugiro que você use o
dircmp
que existe em muitos Unixes.Ver:
A
-d
opção parece ser a que você pode achar mais adequada:irá comparar o conteúdo de
dir1
edir2
exibirá umadiff
saída semelhante.Você tem muitas opções para sua tarefa. Em vez de repetir as recomendações daqueles que responderam antes de mim, adicionarei uma com uma aparência diferente com a qual você pode se sentir mais confortável.
Se você se sentir confortável usando o
midnight commander
, que é um gerenciador de arquivos de painel duplo baseado em ncurses para o console, esse programa inclui um recurso gráfico de comparação de diretórios.O procedimento para usá-lo é começar com cada diretório visível em um painel e, em seguida, pressionar
C-x d
(a combinação de teclas padrão) ouF9 c c
(as teclas de atalho padrão para o item de menu).Aqui está um trecho editado da
mc
página do manual que descreve o comando e seus três modos de operação:Quando a comparação terminar,
mc
irá selecionar e destacar visualmente os arquivos exclusivos do diretório atual. Assim, pressionandoF5
irá copiá-los para o outro painel. Para excluir os arquivos comuns a ambos os diretórios, pressione*
para alternar a seleção (e observe comomc
agora destaca o inverso do que foi destacado antes) e pressioneF8
para excluir.rmlint tem opções para fazer isso:
(o separador '//' identifica caminhos "marcados" para as opções --keep-all-tagged e --must-match-tagged )
Depois de encontrar duplicatas, o rmlint cria um script executável rmlint.sh que você pode executar (após a verificação) para excluir as duplicatas.
Percebi que você marcou sua pergunta como
ubuntu
normalmente vem com uma área de trabalho gráfica, então aqui estão algumas opções de área de trabalho gráfica:1) Se você estiver usando o
nautillus
gerenciador de arquivos, existe um pacote ubuntu chamadonautilus-compare
que integra uma comparação de diretórios no gerenciador de arquivos que você já usa.2) Também existe um programa autônomo chamado
meld
que executa comparações de arquivos e diretórios.Executar qualquer comando com a
--delete
opção me deixa nervoso, então escrevi o script a seguir para procurar arquivos COMPARTILHADOS por $ DIR1 e $ DIR2, mas apenas moverá os arquivos de $ DIR1 para uma pasta de lixo para revisão posterior, deixando arquivos exclusivos atras do. Ele também preserva a estrutura de diretórios na pasta de lixo, facilitando a recuperação.Isso deixará diretórios vazios que podem ser excluídos com: