sed -i 's/old_str/new_str/g' `grep old_str -rl /path/` //文本替换
find . -type f -name "old_file_partial_name*" | xargs -I {} rename -v old_file_partial_name new_file_partial_name {} //文件名替换
1. 批量替换文件内容
- 作用:在
/path/目录及其子目录下,所有包含old_str的文件中,将old_str替换为new_str。 - 各部分解析:
grep old_str -rl /path/:grep用于查找文件内容包含old_str的文件。-r:递归搜索子目录。-l:只输出包含匹配内容的文件名(而非匹配行内容)。- 整体作用:找到所有包含
old_str的文件路径。
sed -i 's/old_str/new_str/g' `...`:...是命令替换,将grep找到的文件路径作为sed的输入。sed -i:直接修改文件内容(-i表示 “in-place”,即原地修改)。s/old_str/new_str/g:sed的替换命令,s表示 “substitute”(替换),g表示 “global”(全局替换,一行中所有匹配都会被替换)。
2. 批量重命名文件
- 作用:在当前目录(
.)下,批量将文件名中包含old_file_partial_name的文件,重命名为包含new_file_partial_name的新文件名。 - 各部分解析:
find . -type f -name "old_file_partial_name*":find .:在当前目录搜索。-type f:只搜索文件(排除目录)。-name "old_file_partial_name*":匹配文件名以old_file_partial_name开头的文件(*是通配符,匹配任意字符)。
| xargs -I {} ...:|:管道,将find的结果传递给xargs。xargs -I {}:将管道输入的每个文件路径,替换为{}(相当于 “占位符”)。
rename -v old_file_partial_name new_file_partial_name {}:rename:重命名文件的工具(需确保系统已安装rename命令,部分系统可能是prename或其他变体)。-v:“verbose”,显示重命名的详细过程。old_file_partial_name new_file_partial_name:将文件名中的old_file_partial_name替换为new_file_partial_name。{}:被xargs替换为find找到的文件路径,指定要重命名的文件。
总结
- 第一条命令用于批量修改文件内容(替换文本)。
- 第二条命令用于批量重命名文件(修改文件名)。
- 两者结合了
grep/find(查找目标)、sed/rename(执行操作)和xargs(传递参数),是 Linux 下高效的批量操作工具链。
1万+

被折叠的 条评论
为什么被折叠?



