我想用shell编写一个程序givien" FolderA" (此示例中的目录名称)。它会检查FolderA中的所有文件以及FolderA的所有子文件夹中的所有文件(wordA),并将其替换为另一个单词(wordB)。
尝试了一些类似的事情 sed -i' s / wordA / wordB / g' FolderA / *
但由于文件夹A中存在其他文件夹而导致错误,因此当sed运行到另一个子文件夹时会出错。
我无法想出一种方法来使用find来获取目录和所有子目录中的所有文件,然后对它们进行sed。有没有办法做到这一点?我很陌生。
谢谢!
答案 0 :(得分:2)
您可以使用find -exec
:
find /FolderA -type f -exec sed -i 's/wordA/wordB/g' {} +
答案 1 :(得分:0)
find
将是您要走的路。
bash替代方案:
shopt -s globstar
files=()
for file in FolderA/**; do # double asterisk is not a typo
[[ -f "$file" ]] && files+=("$file")
done
sed -i 's/wordA/wordB/g' "${files[@]}"