GNU/Linux >> Tutoriels Linux >  >> Linux

Le moyen le plus court d'échanger deux fichiers dans bash

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

est légèrement plus efficace !

Enveloppé dans une fonction shell réutilisable :

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

Ajoutez ceci à votre .bashrc :

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

Si vous souhaitez gérer l'échec potentiel de l'intermédiaire mv opérations, vérifiez la réponse de Can Bal.

Veuillez noter que ni ceci, ni d'autres réponses ne fournissent une réponse atomique solution, car il est impossible de l'implémenter en utilisant des appels système Linux et/ou des systèmes de fichiers Linux populaires. Pour le noyau Darwin, cochez exchangedata appel système.


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

Linux
  1. Créer des fichiers temporaires dans bash

  2. Afficher deux fichiers côte à côte

  3. Comment joindre deux fichiers CSV ?

  4. Quel est le moyen le plus rapide de combiner deux fichiers ou plus sous Linux ?

  5. Synchroniser deux dossiers locaux dans bash

Comment lire des fichiers ligne par ligne dans Bash

Comment afficher deux fichiers côte à côte sous Linux

Comment comparer deux fichiers dans un terminal Linux

Utilisation de Bash Sort pour trier les fichiers comme un patron

Comparer deux fichiers dans un terminal Linux

Meilleur moyen de transférer des fichiers sur un réseau local entre deux ordinateurs Linux