我经常要交换两个这样的文件夹:
$ mv a{,-alt-tmp}
$ mv a{-alt,}
$ mv a-alt{-tmp,}
即。文件夹“a”变为“a-alt”,“a-alt”变为“a”。是否有一些bash命令来完成这个?这两个变化之间应该有一个最小的时间差距。
我可以用
做类似的事情$ mv a{,-old} && mv a{-new,}
但这不适用于真正的名称交换,因为之后一个文件夹有另一个名称。
答案 0 :(得分:2)
理想情况下,您需要设置符号链接以便快速交换。
由于你无法硬链接目录,我想移动解决方案是唯一真正的替代方案。
答案 1 :(得分:2)
我不确定你是否可以原子地做到这一点,但是在一个小脚本或bash函数中三次调用mv
之间的时间差距很小,可能足以满足大多数人的需求。例如
function altdir { mv $1 $1-alttmp; mv $1-alt $1; mv $1-alttmp $1-alt; }
小心,好像a /目录中的文件有一个打开的文件句柄,移动后句柄将指向现在位于a-alt /目录中的文件。