目前,我正在处理一个项目,需要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与\;每个执行调用将处理一个文件