GNU/Linux >> Tutoriales Linux >  >> Linux

La forma más corta de intercambiar dos archivos en bash

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

es un poco más eficiente!

Envuelto en función de shell reutilizable:

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

Agregue esto a su .bashrc:

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

Si desea manejar la falla potencial del mv intermedio operaciones, consulta la respuesta de Can Bal.

Tenga en cuenta que ni esta ni otras respuestas proporcionan un atómico solución, porque es imposible implementarla usando llamadas al sistema de Linux y/o sistemas de archivos populares de Linux. Para el kernel de Darwin, marque exchangedata llamada al sistema.


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

Linux
  1. ¿Imprimir dos archivos en dos columnas?

  2. Obtener todos los archivos excepto los archivos en matriz:¿Bash?

  3. Crear y eliminar archivos de intercambio en Ubuntu

  4. ¿Cómo unir dos archivos CSV?

  5. La mejor manera de transferir archivos a través de una LAN entre dos computadoras Linux

Cómo leer archivos línea por línea en Bash

Cómo mostrar dos archivos uno al lado del otro en Linux

Cómo comparar dos archivos en la terminal de Linux

Usando Bash Sort para ordenar archivos como un jefe

Comparando dos archivos en la terminal de Linux

Sincroniza dos carpetas locales en bash