我试图获得一种单行解决方案,将目录及其子目录中的一堆文件复制到一个单独的目录中,并得到以下结果:
find source/ -type f | xargs -I '{}' cp -a --backup=t '{}' destination/
它在大多数情况下都运行良好,仅复制文件和处理重复的文件名,但我想知道是否有一种方法可以使来自 cp 命令的后缀位于扩展名之前。现在,如果两个文件具有相同的名称并被复制到其中,我将得到:
file.txt
file.txt~1~
如果可能的话,我想改为获取file~1~.txt
甚至使用不同的分隔符,例如file(1).txt
or file-1.txt
。
它可能会变得混乱,因为该命令似乎cp
不会在扩展之前检查分隔符是否匹配,从而导致如下结果:file~1~~1~~1~.txt
最终,但如果有人有任何简单的解决方案,那就太好了。现在我正在通过管道进入ls
并vim
通过全局命令进行批量重命名并写入!sh
.