我需要修改目录中的一些文件。我需要修改所有包含特定文本的文件,并且必须替换为一些新文本。
所以我想编写一个shell脚本,它将遍历所有子目录并修改内容,但是在遍历所有可能的目录时我遇到了问题。
答案 0 :(得分:2)
您可以使用find
遍历寻找文件的子目录,然后将其传递给sed
以搜索和替换文本。
e.g。
find /some/directory -type f -name "*.txt" -print -exec sed -i 's/foo/bar/g' {} \;
将找到所有txt文件并用其中的bar替换foo。
-i
使sed就地更改文件。如果您希望在更改之前备份文件,还可以为sed提供备份后缀。
答案 1 :(得分:1)
GNU find
find /some_path -type f -name "*.txt" -exec sed -i 's/foo/bar/g' "{}" +;
答案 2 :(得分:1)
答案 3 :(得分:0)
你想要find
。
答案 4 :(得分:0)
for n in $(find | grep txt$)
do
echo $n
modify_content.sh $n
done