GNU/Linux >> Znalost Linux >  >> Linux

Nejrychlejší způsob, jak zjistit, zda dva soubory mají stejný obsah v Unixu/Linuxu?

Líbí se mi, že @Alex Howansky k tomu použil 'cmp --silent'. Ale potřebuji pozitivní i negativní odpověď, takže používám:

cmp --silent file1 file2 && echo '### SUCCESS: Files Are Identical! ###' || echo '### WARNING: Files Are Different! ###'

To pak mohu spustit v terminálu nebo pomocí ssh a zkontrolovat soubory proti konstantnímu souboru.


Rychle a bezpečně porovnejte libovolné dva soubory:

if cmp --silent -- "$FILE1" "$FILE2"; then
  echo "files contents are identical"
else
  echo "files differ"
fi

Je čitelný, efektivní a funguje pro všechny názvy souborů včetně "` $()


Věřím, že cmp se zastaví na prvním rozdílu bajtů:

cmp --silent $old $new || echo "files are different"

Protože jsem na hovno a nemám dostatek bodů reputace, nemohu přidat tuto lahůdku jako komentář.

Ale pokud se chystáte použít cmp příkazu (a nepotřebujete/nechcete být podrobný), můžete jednoduše zachytit stav ukončení. Podle cmp manuálová stránka:

Pokud je FILE '-' nebo chybí, čtěte standardní vstup. Výstupní stav je 0, pokud jsou vstupy stejné, 1, pokud se liší, 2, pokud jsou potíže.

Takže můžete udělat něco jako:

STATUS="$(cmp --silent $FILE1 $FILE2; echo $?)"  # "$?" gives exit status for each comparison

if [[ $STATUS -ne 0 ]]; then  # if status isn't equal to 0, then execute code
    DO A COMMAND ON $FILE1
else
    DO SOMETHING ELSE
fi

EDIT:Díky všem za komentáře! Zde jsem aktualizoval syntaxi testu. Doporučuji však použít Vasiliho odpověď, pokud hledáte něco podobného této odpovědi z hlediska čitelnosti, stylu a syntaxe.


Linux
  1. Porovnejte dva obrázky způsobem python/linux

  2. Jak získat rozdíl (pouze doplňky) mezi dvěma soubory v linuxu

  3. Jaký je nejrychlejší způsob spojení dvou nebo více souborů v Linuxu?

  1. Zkopírujte soubory v terminálu Linux

  2. Přesunout soubory v terminálu Linux

  3. Mít krávu na příkazovém řádku Linuxu

  1. Účel složky Lost+found v Linuxu a Unixu?

  2. Linux – Jak lze zkontrolovat informace o struktuře adresářů souboru Unix/linux?

  3. Nejrychlejší způsob, jak extrahovat Iso?