GNU/Linux >> Linux の 問題 >  >> Linux

bash で 2 つのファイルを交換する最短の方法

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

わずかに効率的です!

再利用可能なシェル関数にラップ:

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

これを .bashrc に追加してください:

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

中間 mv の潜在的な障害を処理したい場合 操作については、Can Bal の回答を確認してください。

これも他の回答もatomicを提供しないことに注意してください Linux システムコールや一般的な Linux ファイルシステムを使用して実装することは不可能であるためです。 Darwin カーネルの場合は、exchangedata を確認してください システムコール。


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

Linux
  1. bash での一時ファイルの作成

  2. bash で 2 つのローカル フォルダーを同期する

  3. Linux でスワップを無効にする最良の方法

  1. Linuxで2つのテキストファイルを結合する方法

  2. すべてのファイルを取得しますが、ファイルは配列内にあります– Bash?

  3. Ubuntuでスワップファイルを作成および削除する

  1. 2つのファイルを2つの列に印刷しますか?

  2. 名前がBashの2つのパターンに一致するすべてのファイルを開くまたは一覧表示するにはどうすればよいですか?

  3. 2つのファイル間の共通行?