tas*_*ian 2 bash shell-script mv
我有一个 bash 脚本,可将文件从多个不同位置移动到名为completed.
我想避免覆盖以前的文件,因此如果Selection Of Recipes.zip我要移动的文件名(例如)已经在 中completed,请在文件名中添加随机数或其他字符串以区分(Selection of Recipes-???.zip,其中???是随机字符串) .
这是可能的mv,还是我应该尝试使用处理该方面的参数创建另一个 bash 脚本?有没有人有一个 bash 脚本,我可以用我自己的模式来对抗它?
如果您使用 GNU,mv您有以下选项。
$ mv -b source/* dest/.
Run Code Online (Sandbox Code Playgroud)
此开关告诉mv将目录中冲突的任何文件推dest/.送到备份版本,通常~在将文件移动到目录之前在文件末尾添加波浪号 ( )。
假设我有以下包含文件的示例目录。
$ mkdir source dest
$ touch source/file{1..3} dest/file{1..5}
$ tree
.
??? dest
? ??? file1
? ??? file2
? ??? file3
? ??? file4
? ??? file5
??? source
??? file1
??? file2
??? file3
Run Code Online (Sandbox Code Playgroud)
现在,当我们将文件从 移动source到 时dest:
$ mv -b source/* dest/.
$ tree
.
??? dest
? ??? file1
? ??? file1~
? ??? file2
? ??? file2~
? ??? file3
? ??? file3~
? ??? file4
? ??? file5
??? source
2 directories, 8 files
Run Code Online (Sandbox Code Playgroud)
再次使用 GNU 版本,mv您可以使用-S <string>开关更改默认行为。
$ mv -b -S "string" source/* dest/.
Run Code Online (Sandbox Code Playgroud)
$ mv -b -S .old source/* dest/.
$ tree
.
??? dest
? ??? file1
? ??? file1.old
? ??? file2
? ??? file2.old
? ??? file3
? ??? file3.old
? ??? file4
? ??? file5
??? source
2 directories, 8 files
Run Code Online (Sandbox Code Playgroud)