$ 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"