我发现(并稍加修改)一个使用正则表达式(和 perl)编辑文件列表的命令。我将它放入一个名为 的脚本文件cred
中,因此我可以将当前目录中所有文件中cred . england England
所有出现的 替换为england
。England
find $1 -type f -exec perl -e 's/'$2'/'$3'/g' -p -i {} \;
它非常强大,而且已经很有用——但是很危险,而且有缺陷。我希望它...
- 首先预览更改(或至少文件操作),要求确认
- 使用比单个单词更长的字符串。我试过
cred . england 'the United Kingdom'
但失败了
我也会对其他(简短且令人难忘,在 osx 和 ubuntu 上普遍安装/可安装)命令感兴趣以实现相同的目标。
编辑:
这就是我到目前为止所拥有的 - 对改进持开放态度......
# highlight the spots that will be modified (not specifying the file)
find $1 -type f -exec grep -E "$2" --color {} \;
# get confirmation
read -p "Are you sure? " -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
# make changes, and highlight the spots that were changed
find $1 -type f -exec perl -e "s/$2/$3/g" -p -i {} \;
echo ""
find $1 -type f -exec grep -E "$3" --color {} \;
else
echo ""
echo "Aborted!!"
fi