复制文件并替换文件名中的标记?

复制文件并替换文件名中的标记?

我从事欧拉计划已经很长时间了。我有一个项目结构,可以很容易地为下一个问题创建一个新文件夹,并且我有几个样板 golang 文件可以开始使用。

ProjectEuler/001/001.go
ProjectEuler/001/001_test.go
ProjectEuler/002/002.go
ProjectEuler/002/002_test.go
...
ProjectEuler/new_question_stub/xxx.go
ProjectEuler/new_question_stub/xxx_test.go

当我创建新问题的文件夹时,我运行以下命令:

ProjectEuler $ mkdir 003
ProjectEuler $ cd 003
ProjectEuler/003 $ cp ../new_question_stub/xxx.go 003.go
ProjectEuler/003 $ cp ../new_question_stub/xxx_test.go 003_test.go

我觉得应该有某种方式可以说“将特定目录中的每个文件复制到当前目录,但用 003 替换令牌 xxx”。不必是一个命令就能一键复制和重命名。复制它们很容易,但是复制后我该如何重命名它们呢?

编辑:我的用例是一个非常简单的示例,只有两个文件,但我正在寻找一种方法来对任意数量的文件执行此操作。

答案1

使用for循环可以吗?喜欢

for file in ../new_question_stub/*; do cp "$file" "003${file#*xxx}"; done

也许你想为此定义一个函数

答案2

您可以先复制所有xxx_*文件,然后使用perl rename重命名它们:

rename "s,^xxx,"$(basename $(pwd))"," *

相关内容