GNU/Linux >> Linux Esercitazione >  >> Linux

Il modo più veloce per sapere se due file hanno lo stesso contenuto in Unix/Linux?

Mi piace che @Alex Howansky abbia usato "cmp --silent" per questo. Ma ho bisogno di una risposta sia positiva che negativa, quindi uso:

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

Posso quindi eseguirlo nel terminale o con un ssh per confrontare i file con un file costante.


In modo rapido e sicuro confronta due file qualsiasi:

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

È leggibile, efficiente e funziona con qualsiasi nome di file incluso "` $()


Credo cmp si fermerà alla prima differenza di byte:

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

Poiché faccio schifo e non ho abbastanza punti reputazione, non posso aggiungere questo bocconcino come commento.

Ma, se hai intenzione di utilizzare il cmp comando (e non hai bisogno/vuoi essere prolisso) puoi semplicemente prendere lo stato di uscita. Secondo il cmp pagina man:

Se un FILE è '-' o mancante, leggi lo standard input. Lo stato di uscita è 0 se gli ingressi sono uguali, 1 se diversi, 2 se guasto.

Quindi, potresti fare qualcosa del tipo:

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:Grazie per i commenti a tutti! Ho aggiornato la sintassi del test qui. Tuttavia, ti suggerirei di utilizzare la risposta di Vasili se stai cercando qualcosa di simile a questa risposta in termini di leggibilità, stile e sintassi.


Linux
  1. Copia i file nel terminale Linux

  2. Sposta i file nel terminale Linux

  3. Linux vs. Unix:qual è la differenza?

  4. Linux:come si controllano le informazioni sulla struttura delle directory di un file Unix/linux?

  5. Il modo più veloce per estrarre un ISO?

Come modificare i file PDF in Linux nel modo più semplice possibile

Come confrontare due file nel terminale Linux

Il modo più veloce per contare i file in modo ricorsivo in Linux

comando ls in Linux/UNIX

Qual è il modo più veloce per combinare due o più file in Linux?

Qual è il modo più veloce per rimuovere tutti i file e le sottocartelle in una directory?