我有数百个文件,我需要改变它的文本的一部分。
例如,我要替换的“http://”的每一个实例与“RTMP://”。
这些文件具有.TXT的推广与跨几个文件夹和子散布。
我基本上是在寻找办法/脚本进入低谷的每一个文件夹/子文件夹,每一个文件,如果发现该文件中的“HTTP”的发生与“RTMP”代替。
我有数百个文件,我需要改变它的文本的一部分。
例如,我要替换的“http://”的每一个实例与“RTMP://”。
这些文件具有.TXT的推广与跨几个文件夹和子散布。
我基本上是在寻找办法/脚本进入低谷的每一个文件夹/子文件夹,每一个文件,如果发现该文件中的“HTTP”的发生与“RTMP”代替。
你可以组合做这个find
和sed
:
find . -type f -name \*.txt -exec sed -i.bak 's|http://|rtmp://|g' {} +
这将创建每个文件的备份。 我建议你检查了几个,以确保它没有你想要的东西,那么你可以使用删除
find . -name \*.bak -delete
这里有一个zsh
我用做此功能:
change () {
from=$1
shift
to=$1
shift
for file in $*
do
perl -i.bak -p -e "s{$from}{$to}g;" $file
echo "Changing $from to $to in $file"
done
}
它利用漂亮的Perl的机制来创建一个备份文件,并修改了提名文件。 您可以使用上面的文件,通过这样迭代:
zsh$ change http:// rtmp:// **/*.html
或者只是把它放在一个微不足道的#!/bin/zsh
脚本(我只是使用的zsh为强大的通配)