Potřeba porovnávání souborů v operačním systému Linux je často přehlížena, ale hraje důležitou roli zejména pro správce systému Linux. Možnost flexibilně porovnávat dva soubory na linuxovém terminálu vrhá určité světlo na to, jak jedinečná nebo odlišná je sada souborů vnímána jako.
[ Také by se vám mohlo líbit:Jak spojit dva textové soubory v Linuxu ]
Například mohou existovat dva soubory se stejnými vlastnostmi a velikostí. Místo předpokladu, že jsou totožné, linuxový program pro porovnávání souborů takový problém vyčistí. Můžete být překvapeni, když zjistíte, že rozlišovacím faktorem těchto dvou souborů je nějaká formulace nebo mezery, které se shodují s jedním souborem a ne s druhým.
Několik linuxových programů založených na terminálu nám může pomoci dosáhnout cíle tohoto článku, ale jen několik z nich vyniká z hlediska dynamických funkcí.
Vytváření textových souborů v Linuxu
Vytvořme dva ukázkové soubory z terminálu Linux. Ujistěte se, že jste uživatel sudoer nebo máte oprávnění sudo v operačním systému Linux, který používáte.
$ sudo nano file1
Tento soubor naplníme nějakým náhodným obsahem.
1 2 3 4 5 6 7 8 9 10 one two three four five six seven eight nine ten This file contains some number sequences in numeric and textual form. Regards, LinuxShellTips Tutor
Pojďme vytvořit druhý soubor.
$ sudo nano file2
Tento soubor naplníme obsahem mírně podobným souboru1 .
11 2 13 4 15 6 7 8 19 10 one twice three four five six seven eight nine ten This file contains some number sequences in numeric form and some textual representation of the numbers. Regards, LinuxShellTips Tutor
Použití diff k porovnání souborů v Linuxu
Od rozdíl je terminálový program, jehož pomocí jsou výstupem cílené rozdíly mezi dvěma soubory. Jinými slovy, rozdíl výstup vám sdělí změny, které lze implementovat do souboru1 aby byl shodný nebo identický s souborem2 .
Výpis rozdílů mezi dvěma soubory
Implementujme první pokus o porovnání těchto dvou souborů:
$ diff file1 file2

Tento výstup můžeme interpretovat následujícím způsobem:
Pokud se vrátíte k původnímu souboru1 a soubor2 soubory, které jsme vytvořili dříve, zjistíte, že výše uvedený rozdíl výstup příkazu nezobrazuje veškerý obsah ze dvou souborů. Vynechal všechny podobnosti těchto dvou souborů a zobrazil pouze jejich rozdíly.
Zjistěte, že dva soubory jsou identické pomocí rozdílu v Linuxu
Vytvořme třetí soubor s názvem file3 .
$ sudo nano file3
Tento soubor naplníme obsahem podobným souboru 1.
1 2 3 4 5 6 7 8 9 10 one two three four five six seven eight nine ten This file contains some number sequences in numeric and textual form. Regards, LinuxShellTips Tutor
Jednovrstvý rozdíl výstup příkazu by nám měl být schopen přímo říci, zda jsou dva soubory totožné.
$ diff -s file1 file3

Použití extra -s
argument příkaz umožňuje tento výstup. Implementace se dvěma neidentickými soubory však stále způsobí jejich rozdíly.
$ diff -s file1 file2

Pokud hledáte jednořádkový výstup na dvou souborech, o kterých se domníváte, že se liší, zvažte použití příkazu diff s -q možnost.
$ diff -q file1 file2 Files file1 and file2 differ
Alternativní zobrazení výstupu příkazu rozdíl
Pokud potřebujete, aby porovnání výstupu vašich dvou souborů bylo vedle sebe, zvažte implementaci rozdílu příkaz s -y
možnost.
$ diff -y file1 file2

Pokud chcete, aby výše uvedený příkaz potlačil nebo ignoroval podobnosti těchto dvou souborů, zahrňte --suppress-common-lines
možnost.
$ diff -y --suppress-common-lines file1 file2
Pokud máte co do činění se dvěma velkými soubory a chcete omezit výstup na konkrétní čísla sloupců, implementovali byste rozdíl příkaz následujícím způsobem.
$ diff -y -W 50 file1 file2

Výše uvedený příkaz předpokládá, že dva srovnávané soubory jsou poněkud velké a přesahují 50 sloupců z hlediska velikosti textu. Výstup rozdílu bude omezen na 50 sloupců.