对多种文件类型使用`find`并替换找到的文件中的字符串

Jea*_*lho 3 bash recursion sed find

我试图以递归方式查找多种类型的文件,并在找到的每个文件中替换某个字符串.但是当我运行脚本时,它只能找到一种类型的文件.

我正在使用的命令行就是这个

find . -name '*.tcl' -o -name '*.itcl' -o -name '*.db' -exec sed -i 's/abc/cba/g' {} +
Run Code Online (Sandbox Code Playgroud)

每次我运行上面的命令时,它只找到类型的文件.db.当我用单个文件类型运行它时,它工作正常.

Gil*_*not 6

您需要组-names *与部分()这样的:

而且,根据我的经验,sed -i只运行与模式匹配的文件会更好:

find . \( -name '*.tcl' -o -name '*.itcl' -o -name '*.db' \) -exec sed -i '/abc/s/abc/cba/g' {} +
Run Code Online (Sandbox Code Playgroud)