GNU/Linux >> Znalost Linux >  >> Linux

Nejkratší způsob, jak vyměnit dva soubory v bash

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

je o něco efektivnější!

Zabaleno do opakovaně použitelné funkce shellu:

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

Přidejte toto do svého .bashrc:

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

Pokud chcete zvládnout potenciální selhání meziproduktu mv operace, zkontrolujte odpověď Can Bal.

Upozorňujeme, že ani tato, ani jiné odpovědi neposkytují atomový řešení, protože je nemožné takové implementovat pomocí linuxových systémových volání a/nebo populárních linuxových souborových systémů. U jádra Darwin zaškrtněte exchangedata systémové volání.


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

Linux
  1. Jak spojit dva textové soubory v Linuxu

  2. Vytvářejte a odebírejte odkládací soubory v Ubuntu

  3. Vytváření dočasných souborů v bash

  1. Tisknout dva soubory ve dvou sloupcích?

  2. Jak otevřít nebo vypsat všechny soubory, jejichž název odpovídá dvěma vzorům v Bash?

  3. Jak spojit dva soubory CSV?

  1. Společné řádky mezi dvěma soubory?

  2. Získat všechny soubory kromě souborů v poli – Bash?

  3. Nejrychlejší způsob, jak zjistit, zda dva soubory mají stejný obsah v Unixu/Linuxu?