是否有命令或选项可以让我在不覆盖任何内容的情况下移动文件?
为了方便起见,我们将文件称为 foo.rar。
现在 -n 类型的作品,它不会覆盖文件。但是如果文件在那里,它也不会移动文件。我希望文件移动,除了像磁盘空间 otu 这样的系统错误。
-b 也可以。-b 的问题是如果有备份文件,那么 -b 会用新的备份文件破坏备份文件。
所以现在给这个问题补充一点,让我们看看我们的 foo.rar 示例。让我们在 /home 中搜索 foo.rar。我们找到了 10 个具有该名称的不同文件。我想做的是执行以下三个命令。
mkdir /tmp/foo_files
find /home -iname "foo.rar" -exec wanted_mv_command {} /tmp/foo_files \;
mv /tmp/foo_files ~/
Run Code Online (Sandbox Code Playgroud)
我希望 ~/foo_files 包含以下内容: foo.rar, foo.rar.1, foo.rar.2 ... foo.rar.9 。
我不在乎使用什么模式。例如,它可以使用 foo.#.rar 而不是 foo.rar.# > 我只是想要两件事。它表明文件的原始名称是什么,并显示文件的不同版本。
由于您使用的是 GNU mv,因此您可以使用它的--backup选项。只需打开编号备份。
mv --backup=numbered file1 file2 your_dir
Run Code Online (Sandbox Code Playgroud)
您可以通过-S选项更改 de 后缀。
下面是一个例子:
$ mv --backup=numbered aa/foo bb/foo cc/foo .
$ ls
aa bb cc foo foo.~1~ foo.~2~
Run Code Online (Sandbox Code Playgroud)