GNU/Linux >> Belajar Linux >  >> Linux

Cara terpendek untuk menukar dua file di bash

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

sedikit lebih efisien!

Dibungkus menjadi fungsi shell yang dapat digunakan kembali:

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

Tambahkan ini ke .bashrc:

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

Jika Anda ingin menangani potensi kegagalan perantara mv operasi, periksa jawaban Can Bal.

Harap perhatikan bahwa baik ini, maupun jawaban lain tidak memberikan atomik solusi, karena tidak mungkin menerapkannya menggunakan syscall Linux dan/atau sistem file Linux populer. Untuk kernel Darwin, periksa exchangedata syscall.


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

Linux
  1. Cetak Dua File Dalam Dua Kolom?

  2. Bagaimana Cara Membuka Atau Mencantumkan Semua File Yang Namanya Cocok Dengan Dua Pola Di Bash?

  3. Garis Umum Antara Dua File?

  1. Cara Menggabungkan Dua File Teks di Linux

  2. Dapatkan Semua File Tapi File Dalam Array – Bash?

  3. Buat dan hapus file swap di Ubuntu

  1. Membuat file sementara di bash

  2. Cara tercepat untuk mengetahui apakah dua file memiliki konten yang sama di Unix/Linux?

  3. Menampilkan dua file berdampingan