Shell脚本遍历所有子目录并修改文件内容

时间:2011-02-24 09:35:14

标签: shell unix

我需要修改目录中的一些文件。我需要修改所有包含特定文本的文件,并且必须替换为一些新文本。

所以我想编写一个shell脚本,它将遍历所有子目录并修改内容,但是在遍历所有可能的目录时我遇到了问题。

5 个答案:

答案 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