Find

複製後使用 Find、Grep、Awk 或 Sed 重命名伺服器

  • June 25, 2011

我的客戶告訴我他們已經在 Ubuntu Linux 伺服器的 VMWare 中複製了一個虛擬機。現在我的工作是進入所有文件並找出仍然具有舊伺服器名稱“bishop”並將其更改為其他名稱的位置。另外,IP地址已更改,我也需要搜尋。

您通常如何使用 find、grep、awk 或 sed 來查找這些文件,然後快速更改它們?最後,我想製作一個 Bash 腳本。

當然,我不希望你告訴我每個文件,而只是想知道查找帶有“x”的文件然後用“y”快速切換的技術。

我實際上強烈建議您將其設為兩步操作:

  1. 查找具有舊主機名和舊 IP 的文件:

find / -print | xargs egrep -l 'oldhost|10.10.10.10' > filelist 2. 然後編輯結果列表並刪除任何您知道不應更改的內容。 3. 然後使用生成的列表,將其放入 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

引用自:https://serverfault.com/questions/284008