我在另一个目录的子目录中有许多图像,我想将它们复制到一个目录中,以便所有图像都在一个地方。
经过一番搜索,我找到并修改了一些东西来创建这个命令:
find . -name "z*.jpg" -exec cp '{}' ~/Extracted/ \;
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但是我发现具有相同名称的图像会被覆盖,所以我这样做了:
find . -name "z*.jpg" -exec cp -n '{}' ~/Extracted/ \;
Run Code Online (Sandbox Code Playgroud)
但是现在具有相同名称的图像被简单地忽略了。
无论如何我可以这样做,以便复制每个图像并重命名具有相同名称的图像?
GNUcp(1)
有一个备份选项:
cp --backup SOURCE [SOURCE...] [DESTINATION]
Run Code Online (Sandbox Code Playgroud)
这具有以下效果,可以使用手册页中所述的其他选项进行控制cp(1)
:
Run Code Online (Sandbox Code Playgroud)--backup[=CONTROL] make a backup of each existing destination file -b like --backup but does not accept an argument -S, --suffix=SUFFIX override the usual backup suffix
备份后缀是
~
,除非用--suffix
或 设置SIMPLE_BACKUP_SUFFIX
。可以通过--backup
选项或通过VERSION_CONTROL
环境变量选择版本控制方法。以下是值:
none
,off
: 从不进行备份(即使--backup
给出)numbered
,t
: 进行编号备份existing
,nil
: 编号如果存在编号的备份,否则简单simple
,never
: 总是做简单的备份
cp --backup=existing --suffix=.orig ~/Music/* ~/Videos
Run Code Online (Sandbox Code Playgroud)
这会将所有文件复制~/Music
到~/Videos
. 如果目标中存在同名文件,则通过附加.orig
到其名称作为备份来重命名。如果存在与备份同名的文件.1
,则会通过追加重命名备份,如果也存在,.2
依此类推。只有这样才能将源文件复制到目的地。
如果要递归复制子目录中的文件,请使用-R
:
cp -R --backup=existing --suffix=.orig ~/Music ~/Videos
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5412 次 |
最近记录: |