在 Unix 中查找扩展名为 .ts 或 .tsx 的所有文件?

big*_*ato 0 find

我有一个 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 文件?

ter*_*don 5

你可以做:

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不是 的标准选项sedsed -i ""用法建议使用 FreeBSD 实现sed(也可在 macOS 上找到)。大多数其他sed实现要么不支持 a -i,要么需要""省略 a。