linux - 如何更改几个子目录中多个文件中的一个字符串?

标签 linux bash ubuntu terminal git-bash

<分区>

我的问题是如何在BASH中改变一个目录和多个子目录下的多个txt文件中的一个单词?我做了如下(检查所有类似的主题)但它仍然无法正常工作。 changePhrase 是子目录和文件所在目录的名称。在该文件中有一个我想更改的字符串。我必须用 for 循环来完成它(这是一项任务)。 我的错误在哪里?谢谢。

#!/bin/bash

for file in changePhrase; do
    if [[ -f $file ]] && [[ -w $file ]]; then
        sed -i -- 's/old/new/g' "$file"
    fi
done

最佳答案

你可以做到

find changePhraseDir -type f -a -writeable|xargs sed -i 's/foo/bar/'
  • -type f -> 文件
  • -a -> 和
  • -writable -> 你的-w

关于linux - 如何更改几个子目录中多个文件中的一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53365081/

相关文章:

linux - 如何在opensuse 15上安装没有互联网连接的c编译器?

java - Windows:移动先前映射到内存中的文件失败

linux - 如何将所有流量重定向到维护页面

php - 如何使用新的 OpenSSL 库编译 PHP

linux - 为什么 "kill"与终端和 system() 不同?

Bash 在命令行上工作,但不在 perl 脚本中工作

python - Pecl/Python : unsupported locale setting - Ubuntu 13. 10

c++ - 使用数据包套接字在同一网络接口(interface)上发送和接收时无法接收数据包

node.js - 从作为子进程运行的脚本将 Node 作为后台进程运行

ubuntu - Rabbitmq 忽略 Ubuntu 12 上的配置