递归替换文件

递归替换文件

我有一个名为 的深层嵌套目录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 *可以匹配包含斜线的字符串。

相关内容