是的,Linux中的find
和sed
命令可以用来查找并替换特定类型的文件
find . -type f -name "*.txt" -exec sed -i 's/old_text/new_text/g' {} \;
这个命令的解释如下:
find .
:从当前目录开始查找。-type f
:只查找文件(不包括目录)。-name "*.txt"
:查找以.txt
结尾的文件。-exec
:对找到的每个文件执行指定的命令。sed -i 's/old_text/new_text/g' {} \;
:使用sed
命令将文件中的old_text
替换为new_text
。{}
表示找到的文件,\;
表示命令的结束。请注意,这个命令会直接修改找到的文件。如果你想保留原始文件并在新文件中创建更改,可以使用以下命令:
find . -type f -name "*.txt" -exec sh -c 'sed "s/old_text/new_text/g" "{}" > tmpfile && mv tmpfile "{}"' \;
这个命令的解释如下:
sh -c '...'
:使用shell执行内部的命令。sed "s/old_text/new_text/g" "{}"
:使用sed
命令将文件中的old_text
替换为new_text
,并将结果输出到一个临时文件(tmpfile
)。mv tmpfile "{}"
:将临时文件重命名为原始文件名。