GNU/Linux >> Linux Esercitazione >  >> Linux

Il modo più breve per scambiare due file in bash

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

è leggermente più efficiente!

Racchiuso in una funzione di shell riutilizzabile:

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

Aggiungi questo al tuo .bashrc:

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

Se vuoi gestire il potenziale errore dell'intermedio mv operazioni, controlla la risposta di Can Bal.

Tieni presente che né questa né altre risposte forniscono un atomico soluzione, perché è impossibile implementarla utilizzando chiamate di sistema Linux e/o filesystem Linux popolari. Per il kernel Darwin, seleziona exchangedata chiamata di sistema.


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

Linux
  1. Come unire due file di testo in Linux

  2. Stampa due file in due colonne?

  3. Come aprire o elencare tutti i file il cui nome corrisponde a due modelli in Bash?

  4. Il modo migliore per trasferire file su una LAN tra due computer Linux

  5. Sincronizza due cartelle locali in bash

Come leggere i file riga per riga in Bash

Come visualizzare due file affiancati in Linux

Come confrontare due file nel terminale Linux

Usando Bash Sort per ordinare i file come un boss

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

Confronto di due file nel terminale Linux