我正在尝试在Linux网络服务器上执行递归查找和替换(搜索100,000多个文件,但是我的SSH会话超时需要很长时间。有没有办法仅搜索名为“index.php”的文件?这会大大减少执行时间。
这是我正在使用的命令:
$ find . -type f -print0 | xargs -0 sed -i “s%Apples%Oranges%g”
答案 0 :(得分:1)
修改find
命令以添加-name
选项:
find . -name 'index.php' -type f -print0 | xargs -0 sed -i "s/Apples/Oranges/g"
(我将-name
谓词放在第一位,原则上它比任何需要stat()
文件的内容要快一些,但很可能是find
优化无论如何。)
另外,考虑xargs
的并行调用;例如使用GNU xargs
:
find . -name 'index.php' -type f -print0 \
| xargs --max-procs `getconf _NPROCESSORS_ONLN` -0 sed -i "s/Apples/Oranges/g"