GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der kürzeste Weg, um zwei Dateien in Bash auszutauschen

$ mv old tmp && mv curr old && mv tmp curr

ist etwas effizienter!

Eingehüllt in wiederverwendbare Shell-Funktion:

function swap()         
{
    local TMPFILE=tmp.$$
    mv "$1" $TMPFILE && mv "$2" "$1" && mv $TMPFILE "$2"
}

Fügen Sie dies zu Ihrer .bashrc hinzu:

function swap()         
{
    local TMPFILE=tmp.$$
    mv "$1" $TMPFILE
    mv "$2" "$1"
    mv $TMPFILE "$2"
}

Wenn Sie mit einem möglichen Ausfall des Zwischenprodukts mv umgehen möchten überprüfen Sie die Antwort von Can Bal.

Bitte beachten Sie, dass weder diese noch andere Antworten ein atomares liefern Lösung, da es unmöglich ist, solche mit Linux-Systemaufrufen und/oder gängigen Linux-Dateisystemen zu implementieren. Überprüfen Sie für den Darwin-Kernel exchangedata Systemaufruf.


tmpfile=$(mktemp $(dirname "$file1")/XXXXXX)
mv "$file1" "$tmpfile"
mv "$file2" "$file1"
mv "$tmpfile" "$file2"

Linux
  1. So verbinden Sie zwei Textdateien unter Linux

  2. Zwei Dateien in zwei Spalten drucken?

  3. Wie öffnet oder listet man alle Dateien auf, deren Name mit zwei Mustern in Bash übereinstimmt?

  4. Gemeinsame Linien zwischen zwei Dateien?

  5. Synchronisieren Sie zwei lokale Ordner in Bash

So lesen Sie Dateien Zeile für Zeile in Bash

So zeigen Sie zwei Dateien nebeneinander in Linux an

So vergleichen Sie zwei Dateien im Linux-Terminal

Verwenden von Bash Sort zum Sortieren von Dateien wie ein Boss

Vergleichen von zwei Dateien im Linux-Terminal

Beste Möglichkeit, Swap in Linux zu deaktivieren