如何将具有重复文件名的文件复制到一个目录中并通过自动重命名副本来保留两个文件?

hei*_*man 15 files 14.04

在 Windows 操作系统上,当您将文件复制到已经具有该名称文件的目录中时,它会询问您是否要:

  1. 复制文件并替换/覆盖现有文件
  2. 取消将新文件复制到目录中
  3. 复制文件,但重命名它(如“文件名 - 复制(1)”)

当我在 Ubuntu 中执行此操作时,我没有第三个选项(很多时候这是一个非常有用的选项)。有什么办法可以在 Ubuntu 中做到这一点吗?

Dav*_*ter 19

不幸的是 Nautilus 没有这个选项。

选项 1:不同的文件管理器

您可以尝试使用其他文件管理器,例如Dolphin

安装海豚(需要Universe存储库)

选项 2:命令行

您还可以使用cp(1)带有备份选项的命令行程序:

cp --backup -t DESTINATION SOURCE [SOURCE...]
Run Code Online (Sandbox Code Playgroud)

这具有以下效果,可以使用手册页中所述的其他选项进行控制cp(1)

--backup[=CONTROL]? 备份每个现有的目标文件

-b? 喜欢--backup但不接受论点

-S, --suffix=SUFFIX? 覆盖通常的备份后缀

备份后缀是~,除非用--suffix或设置SIMPLE_BACKUP_SUFFIX。可以通过--backup选项或通过VERSION_CONTROL环境变量选择版本控制方法。以下是值:

  • none, off: 从不进行备份(即使--backup给出)
  • numbered, t: 进行编号备份
  • existing, nil: 编号如果存在编号的备份,否则简单
  • simple, never: 总是做简单的备份

例子

cp --backup=existing --suffix=.orig -t ~/Videos ~/Music/*
Run Code Online (Sandbox Code Playgroud)

这会将所有文件复制~/Music~/Videos. 如果目标中存在同名文件,则通过附加.orig到其名称作为备份来重命名。如果存在与备份同名的文件,则会通过追加来重命名备份,如果该文件.1也存在.2,依此类推。只有这样才能将源文件复制到目的地。

如果要递归复制子目录中的文件,请使用:

cp -R --backup=existing --suffix=.orig -t ~/Videos ~/Music
Run Code Online (Sandbox Code Playgroud)

  • Dolphin 非常适合这个 :) (2认同)