bash - 使用shell修改文件夹及其所有子文件夹中的文件

标签 bash shell sed find

我想使用 shell 编写一个程序,该程序给出“FolderA”(本例中的目录名称)。它会检查FolderA 中的所有文件以及FolderA 的所有子文件夹中的所有文件中是否存在某个单词(wordA),并将其替换为另一个单词(wordB)。

尝试过一些事情,比如 sed -i 's/wordA/wordB/g' 文件夹A/*

但这会产生错误,因为文件夹 A 内还有其他文件夹,并且 sed 在运行到另一个子文件夹时会产生错误。

我无法想出一种方法来使用 find 来获取目录和所有子目录中的所有文件,然后对它们执行 sed 。有没有办法做到这一点?我对 shell 很陌生。

谢谢!

最佳答案

您可以使用find -exec来实现:

find /FolderA -type f -exec sed -i 's/wordA/wordB/g' {} +

关于bash - 使用shell修改文件夹及其所有子文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28223738/

相关文章:

linux - 对httpd感到困惑

json - 如何在 bash 中用\"替换 JSON 文件中的引号?

bash - 使用 while 循环遍历参数列表会进入无限循环

android - 通过终端找不到用于 OUYA 驱动程序设置的 bash adb 命令?

bash - 如何在 grep 结果中保留换行符?

xml - XML 文件的第一个字符必须是什么?

c - Wget 使用 Samba 服务器从数据记录器下载时出现问题

bash - 如何在行尾附加模式匹配数的计数器?

python - 我怎样才能把这个字符串分开?

linux - 在 bash 脚本中运行两个正在进行的命令