如何停止重命名已使用 shell 脚本中的循环重命名的文件

如何停止重命名已使用 shell 脚本中的循环重命名的文件

我有一个目录名,dir1其中包含名为 1,2,3,4,5 的其他目录。现在我想将目录 1 重命名为 4,2 => 5,3 => 6,4 => 5。但我的问题是使用mvshell 脚本中的命令成功重命名目录 1,2,3,但在重命名目录 4 的情况下,目录 1 被替换为 5。我该如何循环重命名这些文件,以使先前重命名的文件不会发生变化。

答案1

你在这里做的事情有点奇怪。结果名称将是:

5 (was: 1)
6 (was: 3)

第一个操作 (mv 1 4) 会删除原始的“4”目录并将其替换为 1。有几种方法可以解决这个问题,我能想到的两种方法是:

  • 将所有目录重命名为带有后缀(例如 .old)的文件,然后将每个目录重命名为所需的名称,或者
  • 只需在第一个操作之前执行最后一个操作(mv 4 5)。

对于第一个选项,你可以这样做:

for file in 1 2 3 4; do mv $file $file.old; done
mv 1.old 4
mv 2.old 5 # actually rather redundant since it would be overwritten anyway
mv 3.old 6
mv 4.old 5

相关内容