GNU/Linux >> Znalost Linux >  >> Linux

Porovnání dvou souborů v linuxovém terminálu

pokud máte nainstalovaný vim, zkuste toto:

vimdiff file1 file2

nebo

vim -d file1 file2

přijde vám to fantastické.


Zkuste sdiff (man sdiff )

sdiff -s file1 file2

Pokud dáváte přednost výstupnímu stylu rozdílu z git diff , můžete jej použít s --no-index příznak pro porovnání souborů, které nejsou v úložišti git:

git diff --no-index a.txt b.txt

Pomocí několika souborů s přibližně 200 000 řetězci názvů souborů v každém jsem provedl benchmarking (s vestavěným time command) tento přístup vs některé další odpovědi zde:

git diff --no-index a.txt b.txt
# ~1.2s

comm -23 <(sort a.txt) <(sort b.txt)
# ~0.2s

diff a.txt b.txt
# ~2.6s

sdiff a.txt b.txt
# ~2.7s

vimdiff a.txt b.txt
# ~3.2s

comm se zdá být zdaleka nejrychlejší, zatímco git diff --no-index se zdá být nejrychlejším přístupem pro výstup ve stylu diff.

Aktualizace 25. 3. 2018 Ve skutečnosti můžete vynechat --no-index flag, pokud nejste uvnitř úložiště git a nechcete porovnat nesledované soubory v tomto úložišti. Z manuálových stránek:

Tento formulář slouží k porovnání daných dvou cest na souborovém systému. Možnost --no-index můžete vynechat, když spouštíte příkaz v pracovním stromu řízeném systémem Git a alespoň jedna z cest ukazuje mimo pracovní strom, nebo když příkaz spouštíte mimo pracovní strom řízený Git.


Seřaďte je a použijte comm :

comm -23 <(sort a.txt) <(sort b.txt)

comm porovná (seřazené) vstupní soubory a standardně vypíše tři sloupce:řádky, které jsou jedinečné pro a, řádky, které jsou jedinečné pro b, a řádky, které jsou přítomné v obou. Zadáním -1 , -2 a/nebo -3 můžete potlačit odpovídající výstup. Proto comm -23 a b uvádí pouze položky, které jsou jedinečné pro a. Používám <(...) syntaxe pro třídění souborů za chodu, pokud jsou již seřazeny, nepotřebujete to.


Linux
  1. Zobrazení dvou souborů vedle sebe

  2. Linux:Porovnejte strukturu adresářů bez porovnávání souborů

  3. Nahrávání souborů na účet S3 z příkazového řádku Linuxu

  1. Zkopírujte soubory v terminálu Linux

  2. Přejmenujte soubor v terminálu Linux

  3. Přesunout soubory v terminálu Linux

  1. Jak komprimovat a dekomprimovat soubory v Linuxu

  2. Jak spojit dva textové soubory v Linuxu

  3. Jak najít soubory pomocí příkazu fd v Linuxu