我的客户告诉我,他们在 VMWare 中克隆了一台 Ubuntu Linux 服务器的虚拟机。现在我的工作是进入所有文件,找出哪些文件仍保留旧的服务器名称“bishop”,并将其更改为其他名称。此外,IP 地址也已更改,我也需要搜索它。
您通常如何使用 find、grep、awk 或 sed 来查找这些文件,然后快速更改它们?最后,我想制作一个 Bash 脚本。
当然,我并不指望你告诉我每个文件,而只是想知道如何查找包含“x”的文件,然后用“y”快速切换该文件。
答案1
我实际上强烈建议您将此操作分为两个步骤:
查找具有旧主机名和旧 IP 的文件:
find / -print | xargs egrep -l 'oldhost|10.10.10.10' > filelist
然后编辑结果列表并删除任何您知道不应该更改的内容。
然后使用结果列表,将其放入 shell 脚本中,并使用文件列表作为输入执行类似以下命令序列的操作:
。
cp filename filename.20110624 # lets be safe!
if test $? -ne 0
then
echo 'filename copy bad'
exit 1
fi
cat filename.20110624 | sed 's/oldhost/newhost/g
s/10.10.10.10/10.20.20.20/g' > filename # the newline between commands is needed
if test $? -ne 0
then
echo edit failed
cp filename.20110624 filename
if test $? -ne 0
then
echo unable to restore filename
exit 1
fi
exit 1
fi
exit 0