我有一个名为 的深层嵌套目录MyProject
,其中包含数十个 git 存储库。每个存储库在某处都包含一个名为 的目录,utils
其中包含一个名为 的文件analytics.js
。
我想用 替换所有出现analytics.js
的~/Desktop/new-analytics.js
。
我如何在unix中做到这一点?
答案1
这是找到需要替换的文件的方法:
find MyProject -type f -path "*/utils/analytics.js"
要用一个文件覆盖所有文件:
find MyProject -type f -path "*/utils/analytics.js" -exec cp -i ~/Desktop/new-analytics.js {} \;
笔记:
-type f
如果一个或多个文件analytics.js
不是常规文件(例如目录)。cp -i
以防万一。-i
在您确认我的答案合理后,请省略。我假设每个
analytics.js
(要替换的)都直接位于某个下utils/
。如果您还对子目录中的文件感兴趣,utils/
请尝试以下操作:find MyProject -type f \ '(' -path "*/utils/analytics.js" -o -path "*/utils/*/analytics.js" ')' \ -exec cp -i ~/Desktop/new-analytics.js {} \;
在上下文中
-path
*
可以匹配包含斜线的字符串。