2010-08-11 50 views
0

文件夾名稱通常我想換兩個文件夾是這樣的:交換兩個在bash

$ mv a{,-alt-tmp} 
$ mv a{-alt,} 
$ mv a-alt{-tmp,} 

即文件夾 「a」 變爲 「A-ALT」 和 「A-ALT」 變成了 「一」。有一些bash命令來完成這個嗎?這兩個變化之間應該有一個最小的時間差距。

我可以做

$ mv a{,-old} && mv a{-new,} 

但這並不與名稱的實際匯率的工作類似的東西,因爲一個文件夾中有一個其他的名字之後。

回答

2

我不確定您是否可以以原子方式執行此操作,但在小腳本或bash函數中調用mv的三次調用之間的時間差很小,並且可能足以滿足大多數人的需求。例如。

function altdir { mv $1 $1-alttmp; mv $1-alt $1; mv $1-alttmp $1-alt; } 

要小心,因爲如果有一個打開的文件句柄在A /目錄中的文件,移動手柄將指向,現在是在一個-ALT /目錄下的文件後。

+1

最後一條語句取決於你是哪個操作系統:) – mathk 2010-08-11 18:15:37

2

理想情況下,您可以設置符號鏈接,以便快速交換。

既然你不能硬鏈接目錄,我想移動解決方案是唯一真正的選擇。

+3

只要源和目標在同一個文件系統上,'mv'的使用也很快。 – 2010-08-11 17:52:53