Linux bash 命令 -backup=numbered。将数字放在文件扩展名之前

Sco*_*eld 5 linux bash find cp git-bash

在 Windows 上使用单行 bash 命令和 GitBash,使用findcp,我正在备份多个子目录中存在的一堆脚本文件。我目前正在将它们备份到一个目录。正如您可以想象的那样,会出现命名冲突。--backup=numbered通过创建文件副本的选项很容易避免这种情况。然而,这样做的问题是它把数字放在文件扩展名后面,命名文件如下:example.js.~2~. 我想要的是保留文件扩展名并像这样命名文件:example2.js而不是将数字放在文件扩展名后面。有什么办法可以做到这一点吗?

另一种选择是将目录名称(来自从中复制目录的目录)添加到要复制的文件的前面,而不是添加数字。我会接受其中任何一个作为解决方案。

这是我到目前为止所拥有的:

find . -path "*node_modules*" -prune -o -type f \( -name '*.js' -or -name '*.js.map' -or -name '*.ts' -or -name '*.json' \) -printf "%h\n" -exec cp {} --backup=numbered "/c/test/" \;
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!谢谢你!

小智 1

关于什么 :

#!/bin/bash

# your find command here
FILES=$(find . -type f .....)

# loop through files and create a new filename with the path within ( slashes replaced by underscores
for FILE in $FILES; do
    NEW_FILENAME=$(printf "%s" "$FILE" | sed s/\\//_/g)
    cp "$FILE" "/c/test/${NEW_FILENAME}"
done
Run Code Online (Sandbox Code Playgroud)

从你的问题来看,我不确定单衬是否是强制性的......