使用windows上带有GitBash的单行bash命令,使用find和cp,我将备份多个子目录中存在的大量脚本文件。我目前正在将它们备份到一个目录中。正如你所能想象的,命名冲突会出现。这很容易避免使用--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/" \;任何帮助都将不胜感激!谢谢!
发布于 2022-03-25 12:41:46
那麽:
#!/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从你的问题上,我不确定一条班轮是否是强制性的.
https://stackoverflow.com/questions/62044911
复制相似问题