如何在命令行上交换两个文件的名称?

如何在命令行上交换两个文件的名称?

我目前在 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

相关内容