2012-09-20 143 views
4

我正在尝试更改我的作业中的版权标题。我可以使用以下命令列出所有带有版权标题的文件:关于grep命令

grep -rni copyright * 

通过上述命令,我获得了大约1000个文件。

任何人都可以请帮助我如何一次性更改所有文件?

回答

3

这将应用于文本更改的文件与他们(不区分大小写)的单词“版权”:

for filename in *; do 
    if grep -qi "copyright" "$filename"; then 
    sed -i'' -e 's/old text/new text/' "$filename" 
    fi 
done 

注意,在当前目录这仅适用。要处理子目录中的文件,您可能需要使用find命令。

如果您可以描述您想要创建的文本更改,我们可能会提出更精确的方法来实现您的目标。

1
grep -ril copyright * | xargs sed -i 's/old text/new text/' 
+0

是否在文件名或文件正文中更改文本? – ghoti

+0

@ghoti,使用xargs表示通过“grep -l”找到的文件名将作为参数传递给sed。 –

+1

+1。如果使用'-l',则不需要'-n' –