Find
複製後使用 Find、Grep、Awk 或 Sed 重命名伺服器
我的客戶告訴我他們已經在 Ubuntu Linux 伺服器的 VMWare 中複製了一個虛擬機。現在我的工作是進入所有文件並找出仍然具有舊伺服器名稱“bishop”並將其更改為其他名稱的位置。另外,IP地址已更改,我也需要搜尋。
您通常如何使用 find、grep、awk 或 sed 來查找這些文件,然後快速更改它們?最後,我想製作一個 Bash 腳本。
當然,我不希望你告訴我每個文件,而只是想知道查找帶有“x”的文件然後用“y”快速切換的技術。
我實際上強烈建議您將其設為兩步操作:
- 查找具有舊主機名和舊 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