Quais ferramentas de comparação de diretório posso usar no OS X?
On Fevereiro 10, 2021 by adminEstou procurando uma ferramenta que seja capaz de comparar diretórios, não apenas arquivos. Também é importante poder chamar a ferramenta na linha de comando.
Seria ótimo ter uma ferramenta gratuita, se não for gratuita, especifique o preço.
Resposta
Para todos os googlers … verifique as regras Além da comparação . Custa 30 $ ou 50 $ para a versão Pro.
Comentários
- Normalmente tento evitar recomendar soluções comerciais quando existem alternativas gratuitas e de código aberto, mas BeyondCompare é um caso especial em que vale cada centavo … e também é multiplataforma. Eu tenho usado por mais de 10 anos e esperei muito para obter a versão para MacOS.
- Agora é abril de 2020 e a versão pro agora custa US $ 60.
- I ‘ tentamos todas as soluções nesta página e acho que Beyond Compare é 100% a melhor e mais válida recomendação.
Resposta
FileMerge (gratuito), fornecido com o Xcode, oferece uma visualização de diretório.
Uma versão de linha de comando está disponível através do aplicativo Terminal opendiff.
Aqui está como você pode comparar dois diretórios com FileMerge:
- ⌘ + espaço, digite “FileMerge” e abra-o.
- Clique no botão “esquerdo” e escolha a pasta da qual deseja mover os itens. (A pasta “antiga”)
- Clique no botão “direito” e escolha a pasta que você gostaria de mover itens PARA. (“nova” pasta) e clique no botão “Comparar”
- No painel direito, escolha excluir: “idêntico” e “Alterado certo”. Desta forma, você só irá y veja os arquivos que estão faltando na “nova” pasta e ignore os arquivos que você pode ter adicionado na “nova” pasta.
- Mova os arquivos manualmente no Finder ou deixe o FileMerge fazer isso, escolhendo uma opção no Lista suspensa “Mesclar” no painel direito.
Comentários
- Eu gostaria de escolher esta resposta porque
opendiff
poderia ser considerado quase ” empacotado ” com o OS X, mas quando tento diferenciar duas pastas, ele abre um visão feia que não era tão fácil de entender e também não consegui ver como faço para mesclar dois arquivos na visualização de arquivos. Eu ‘ tenho certeza de que é possível, mas se esse recurso básico não for óbvio, prefiro procurar algo melhor;) - FileMerge não é tão bom quanto BeyondCompare, de longe. Mas é gratuito e exige uma única vez que ‘ é o preço que eu estava procurando 🙂
Resposta
Utilitário integrado para macOS e Linux
Se você não se importar em usar o terminal, o diff
pode comparar diretórios.
Este utilitário também está disponível na maioria das distribuições Linux.
diff -rq directory1/ directory2/
-r
indica recurse através de subdiretórios, e -q
dá uma saída breve (ou seja, não mostra as diferenças reais, apenas observe quais arquivos / diretórios são diferentes).
Outras opções úteis são:
-s
relatar arquivos idênticos,
-i
ignorar maiúsculas e minúsculas no conteúdo do arquivo,
--ignore-file-name-case
ignore maiúsculas e minúsculas ao comparar nomes de arquivos.
Se você quiser evitar avisos (principalmente avisos de utilidade) sobre diferenças no .DS_Store
arquivos e, em seguida, use:
diff -rq directory1/ directory2/ | grep -v .DS_Store
Comentários
- Você pode excluir subpastas diretamente por
diff --exclude node_modules
- Melhor ainda, você pode usar
diff -x node_modules
Resposta
Diffmerge deve atender a todos os seus requisitos.
Comentários
- Só espero que eles façam um instalador que será capaz de instalar os iniciadores de linha de comando e melhorar a experiência de instalação atual.
- Este é um tópico antigo – mas eu instalei via
brew cask install diffmerge
e ele instalou sem problemas. - Abril de 2016: ainda é mantido e ainda é uma das minhas ferramentas de desenvolvimento preferidas.
- FWIW eu tentei
brew cask install diffmerge
hoje (junho de 2020) e quando tentei executar o diffmerge, recebi uma caixa de alerta informando que o MacOS não ‘ iria executar o programa porque pode ‘ t verifique o desenvolvedor. (diffmerge não foi executado) - @MikeTheTall Isn ‘ t que é normal para aplicativos que não são da loja de aplicativos? Você tentou clicar diretamente no ícone do aplicativo com a tecla Ctrl pressionada e escolher
open
no menu de atalho?
Resposta
Outra ferramenta interessante para conseguir isso é o rsync, conforme descrito em Unix & Linux StackExchange .Para comparar duas pastas, você pode fazer
rsync -avun $SOURCE $TARGET
E se você estiver realmente preocupado com a consistência do arquivo / podridão de bits, há também a opção c para comparar as somas de verificação do arquivo
rsync -avnc $SOURCE $TARGET
Comentários
- Ótima referência para sua utilidade em todos os Unixes 🙏🏻.
Resposta
Comprei recentemente uma cópia do Caleidoscópio (aprox US $ 40). É um aplicativo limpo.
vimdiff também está disponível via linha de comando e é portátil na maioria dos domínios UNIXy.
Comentários
- Eu ‘ uso o Caleidoscópio há alguns meses. Vale o preço. Ele é vendido ocasionalmente.
- O Caleidoscópio não permite que você edite um arquivo, inútil!
- Preço do Caleidoscópio na App Store em 2020: 74,99 eur
Resposta
Você deve experimentar o poderoso software de código aberto meld . A versão para Mac pode ser encontrado em Meld para OSX . Suporta comparação de diretórios e arquivos e funciona muito bem no Mac.
Disseram-me para melhorar isso responda e explique por que o meld é bom. De modo geral, o Meld é um software de comparação de recursos completo usado principalmente no GNOME. É melhor do que muitos softwares listados aqui porque
- é gratuito e de código aberto . Então você você não precisa se preocupar com a taxa ou segurança
- se não for mais poderoso, é tão sofisticado quanto um monte de software que exige muito dinheiro
- é usuário- amigável e não envolve configuração complexa ou comando de digitação no terminal. Você deve ser capaz de usá-lo imediatamente depois de instalá-lo.
A parte que não é tão bom pode ser que ele foi desenvolvido em GTK. Portanto, às vezes não parece programas MAC da natureza. Além disso, as versões antigas do MAC eram um pouco problemáticas. Mas o mais recente 3.19.2 que estou usando atualmente funciona muito bem e nunca encontrei um problema.
Comentários
- A instalação também é fácil com
brew cask install meld
Resposta
A ferramenta diff que vem com O Text Wrangler da Bare Bones Software tem comparação de diretórios, embora mostre apenas quais arquivos estão em ambos os diretórios e quais estão apenas em cada um dos diretórios. Ao selecionar um arquivo que está em ambos você pode editar mesclando as alterações linha por linha com o clique de um botão. No entanto, ele não permite que você mova arquivos. Você deve fazer isso externamente (por exemplo, via Finder).
Acho que é uma das melhores opções gratuitas.
Resposta
Eu uso Sincronização de pasta . Custa US $ 8,99 no Mac App Store Funciona muito bem.
Resposta
Tenho comparado estruturas de pastas grandes (DVDs) no passado, desenvolvi um utilitário de linha de comando para fazer isso. Recentemente, tornei o utilitário (CrcCheckCopy) gratuito e multiplataforma (MacOS e Windows).
CrcCheckCopy verifica a pasta de origem e cria um arquivo contendo os carimbos CRC de todos os arquivos. Em seguida, esse arquivo é usado para comparar a pasta de destino.
Você pode obtê-lo aqui: https://www.starmessagesoftware.com/crccheckcopy Seu feedback, você será muito apreciado.
Resposta
Mudanças no aplicativo ($ 37,19) costumava ser minha desgraça rkforce para isso. É tão bom quanto Beyond Compare.
Nota: Espero que este controle de qualidade tenha permissão para existir, embora seja contra pelo menos as normas da SO argumentar sobre produtos. A necessidade de uma ferramenta gráfica de comparação de diretórios utilizável e intuitiva para o macOS continua aguda. Os candidatos de código aberto não atingiram o nível de usabilidade que as ferramentas comerciais fornecem.
Resposta
Se você sabe como executar Python , aqui está um script que escrevi há algum tempo para comparar dois diretórios com eficiência.
Recursos:
- ele pode comparar estruturas de árvore e alterações de arquivo (com base no tamanho do arquivo & hashes MD5)
- pode desligar a comparação de arquivos, mostrando apenas mudanças na estrutura da árvore (muito rápido!)
- pode desligar a comparação do conteúdo do arquivo , contando apenas com mudanças no tamanho do arquivo (novamente, muito rápido)
- pode colorir a saída para melhor legibilidade.
E, naturalmente, pode modificar de acordo com suas necessidades, se você souber programar.
#!/usr/bin/env python3 """ A script to recursively compare two directories (including file size and file hash changes) Usage: python3 compare_dirs.py DIR1 DIR2 """ import os, sys, hashlib COMPARE_FILES = True # should file sizes be compared if their names are the same? MD5 = True # should file hash sums be compared if their names and sizes are the same? COLORIZE = False # colorization for bash (only Linux & Unix) def md5sum(fn): hasher = hashlib.md5() with open(fn, "rb") as f: hasher.update(f.read()) return hasher.hexdigest() WHITE, RED, GREEN = 15, 196, 46 fg = lambda text, color: "\33[38;5;" + str(color) + "m" + text + "\33[0m" def compare_dirs(d1: "old directory name", d2: "new directory name"): def print_local(a, msg): text = "{} {} {}".format("DIR " if a[2] else "FILE", a[1], msg) if COLORIZE: color = {"added": GREEN, "removed": RED}.get(msg, WHITE) print(fg(text, color)) else: print(text) # Ensure validity for d in [d1,d2]: if not os.path.isdir(d): raise ValueError("not a directory: " + d) # Get relative path l1 = [(fn, os.path.join(d1, fn)) for fn in os.listdir(d1)] l2 = [(fn, os.path.join(d2, fn)) for fn in os.listdir(d2)] # Determine type: directory or file? l1 = sorted([(fn, pth, os.path.isdir(pth)) for fn, pth in l1]) l2 = sorted([(fn, pth, os.path.isdir(pth)) for fn, pth in l2]) i1 = i2 = 0 cnt = 0 common_dirs = [] while i1<len(l1) and i2<len(l2): if l1[i1][0] == l2[i2][0]: # same name if l1[i1][2] == l2[i2][2]: # same type if l1[i1][2]: # Pair of directories -> remember the name for recursion common_dirs.append((l1[i1][1], l2[i2][1])) elif COMPARE_FILES: # Pair of files -> compare their sizes size1 = os.stat(l1[i1][1]).st_size size2 = os.stat(l2[i2][1]).st_size if size1!=size2: print_local(l1[i1],"size changed: {:d} -> {:d}".format(size1, size2)) elif MD5: # Sizes are the same -> compare MD5 hashes if md5sum(l1[i1][1])!=md5sum(l2[i2][1]): print_local(l1[i1],"hash changed") else: print_local(l1[i1],"type changed") i1 += 1 i2 += 1 elif l1[i1][0]<l2[i2][0]: print_local(l1[i1],"removed") i1 += 1 elif l1[i1][0]>l2[i2][0]: print_local(l2[i2],"added") i2 += 1 cnt += 1 while i1<len(l1): print_local(l1[i1],"removed") i1 += 1 cnt += 1 while i2<len(l2): print_local(l2[i2],"added") i2 += 1 cnt += 1 # Compare subfolders recursively for sdir1,sdir2 in common_dirs: cnt += compare_dirs(sdir1, sdir2) return cnt if __name__=="__main__": print ("Comparing files {}abled".format("en" if COMPARE_FILES else "dis")) print ("MD5 checking {}abled".format("en" if MD5 else "dis")) print ("Colorization {}abled".format("en" if COLORIZE else "dis")) print (compare_dirs(sys.argv[1], sys.argv[2]), "items compared")
Link para GitHub Gist.
NOTA: não funcionará para os arquivos ou subdiretórios que foram movidos para o iCloud.
Resposta
Mais fácil solução: sincronizar o arquivos usando o Dropbox ou similar, então é só usar o WinMerge no Windows.
O utilitário FileMerge que vem com o Xcode não compara pastas e não mescla / edita.
Deixe uma resposta