查找和替换目录中所有文件中的某个字符串

1、查找目录下包含某个字符串的文件

例:查找 dir 目录下所有包含 str 的文件。

grep -lr 'str' dir

2、vim替换单个文件中所有字符串方法

例:替换当前文件中所有 old 为 new

:%s/old/new/g

3、替换目录下所有文件中到某个字符串——sed结合grep

例:要将目录 dir 下面所有文件中的 old 都修改成new,这样做:

sed -i "s/old/new/g" `grep 'old' -rl dir`

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用C语言修改文件某个字符串的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUFFER_SIZE 1024 int main(int argc, char *argv[]) { FILE *fp; char buffer[BUFFER_SIZE]; char *tempName = "temp.txt"; char *str1 = argv[1]; // 需要替换字符串 char *str2 = argv[2]; // 替换成的字符串 // 打开原始文件 fp = fopen(argv[3], "r"); if (fp == NULL) { printf("Failed to open file: %s\n", argv[3]); exit(1); } // 创建临时文件 FILE *temp = fopen(tempName, "w"); if (temp == NULL) { printf("Failed to create temporary file.\n"); fclose(fp); exit(1); } // 逐行读取原始文件替换字符串 while (fgets(buffer, BUFFER_SIZE, fp)) { char *pos = strstr(buffer, str1); while (pos != NULL) { int index = pos - buffer; memmove(pos + strlen(str2), pos + strlen(str1), strlen(pos) - strlen(str1) + 1); memcpy(pos, str2, strlen(str2)); pos = strstr(pos + strlen(str2), str1); } fputs(buffer, temp); } // 关闭文件 fclose(fp); fclose(temp); // 删除原始文件并重命名临时文件 remove(argv[3]); rename(tempName, argv[3]); printf("String replaced successfully.\n"); return 0; } ``` 上述代码,我们使用了`fgets()`函数逐行读取原始文件,并使用`strstr()`函数查找需要替换字符串。如果找到了需要替换字符串,我们使用`memmove()`函数将后面的字符向后移动,然后使用`memcpy()`函数将新的字符串复制到原始字符串的位置。最后,我们将修改后的内容写入临时文件,并在完成替换后删除原始文件并重命名临时文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值