在 Linux 中将"*.sample.js"文件重命名为"*.js"



目前,我正在处理一个项目,需要git忽略我的本地配置文件。这意味着,如果用户克隆存储库,他将在配置目录中看到*.sample.js文件。如果用户执行make config,则执行以下脚本。

config:     ##@Misc Create config files
@cd src/backend/config
@cp cache.sample.js cache.js
@cp database.sample.js database.js
@cp steam.sample.js steam.js
@cp teamspeak.sample.js teamspeak.js
@cp website.sample.js website.js
@echo

这个脚本基本上从文件名中删除了"sample"部分。当我添加新的配置文件时,上面的代码需要修改,这不是一件实际的事情。

我想把它转换成一个简单的regex命令,比如:

find -iname *.sample.js -type f -exec rename -n 's/(.*sample.js)/$1/' {} ;

这个命令不起作用,至少在windows MINGW64 bash上是这样。我需要香草溶液。

感谢@Jetchill提供了一个有效的解决方案:

find -iname '*.sample.js' -type f -exec bash -c 'for f; do cp "$f" "${f/.sample}"; done' sh {} +

额外奖励:为什么最后一个+符号?

这将处理尽可能多的文件,同时避免arg_max与\;每个执行调用将处理一个文件

最新更新