我目前在 Ubuntu 10.04 下使用 bash 工作,但该解决方案在其他环境中也很有趣(例如 Windows cmd.exe)。我通常会用临时名称重命名第一个文件,用第一个名称重命名第二个文件,最后用第二个名称重命名临时文件。有没有一个习惯用法或程序可以一步完成此操作?
示例(bash):
$ mv file1 tmp; mv file2 file1; mv tmp file2
答案1
我创建了下面的 shell 脚本来完成此任务,但我仍然好奇是否已经有可用的标准方法。
#!/bin/sh
tmp=`mktemp`
mv $1 $tmp
mv $2 $1
mv $tmp $2
我将其命名为 swap,使其可执行并放置在我的路径中。这允许使用以下语法。
swap file1 file2
答案2
尝试:
$ mv old_file tmp_file && mv current_file old_file && mv tmp_file current_file
正如所见https://stackoverflow.com/a/1115909/1478950
更安全,因为如果初始失败,您不会丢失文件mv
。