我有一个 React 应用程序,其中有些文件在其中.ts
,有些文件在.tsx
目前,为了更新 .ts 和 .tsx 文件的内容,我必须运行 2 个单独的命令:
internal-web main % cd src
src main % find . -name '*.tsx' -print0 | xargs -0 sed -i "" "s/SomeThing/SOME_THING/g"
src main % find . -name '*.ts' -print0 | xargs -0 sed -i "" "s/SomeThing/SOME_THING/g"
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以将其合并到一个命令中,以便我可以同时更新 .ts 和 .tsx 文件?
你可以做:
find . \( -name '*.tsx' -o -name '*.ts' \) -print0 |
xargs -0 sed -i "" "s/SomeThing/SOME_THING/g"
Run Code Online (Sandbox Code Playgroud)
或者,更简单、更便携(并且避免sed
在未找到文件时出现错误):
find . \( -name '*.tsx' -o -name '*.ts' \) -exec sed -i "" "s/SomeThing/SOME_THING/g" {} +
Run Code Online (Sandbox Code Playgroud)
无论如何,请注意这-i
不是 的标准选项sed
。sed -i ""
用法建议使用 FreeBSD 实现sed
(也可在 macOS 上找到)。大多数其他sed
实现要么不支持 a -i
,要么需要""
省略 a。