操作如下
參考文獻
小結現在會議很多都是雙盲評,然而又需要上傳材料/實驗結果,這時候需要把材料中和自己名字相關的去掉。
故涉及到批量修改多個檔案中的內容,在此記錄之。
我在ubuntu下存在我的材料,都存在叫做results
的資料夾裡面,這裡面主要是有很多日誌,這些日誌裡包含系統路徑,如/home/dale/***,然而這些如果被評委看到名字的話,可能不太好。
所以我現在希望把這個results
資料夾下的dale全部換成user。
這裡再次做了研究,發現有個更好的版本,記錄如下:
# 先找到所有相關檔案
for file in `grep -rn "yang" .`
do # 如果是我們要找到的檔案,即repair_algorithms/資料夾內的檔案,那就操作。否則不做任何處理(這個就很nice)
if [[ "$file" == ./repair_algorithms/* ]];then
# cut 出檔案的路徑
file_name=`echo $file | cut -d ':' -f 1`
# sed 就是把所有file_name 檔案中的yang全部替換為impact,至此達到目標
sed -i 's/yang/impact/g' $
fidone
關於特殊字元的問題,是需要轉義的,參考:
sed替換特殊符號
(此外,還有如:「/」較多時,把替換符「/」換成「#」
),示例指令碼如下:
cd ./bug-dot-jar/repositories/
pwdfor file_name in `find . -name .git -type f`
do #gitdir: ../../../../.git/modules/benchmarks/bug-dot-jar/modules/repositories/accumulo
#gitdir: ../../../dataset_modules/bug-dot-jar/modules/repositories/accumulo
#../.git/modules/benchmarks
#dataset_modules
sed -i 's#\.\./.git/modules/benchmarks#dataset_modules#g' $
echo "$file_name"
done
1)用grep找到所有包含dale的檔案(的相對路徑);
2)用sed對檔案的指定內容進行替換(將dale替換為user)。
**如下:
# grep所有有dale的檔案
for file in `grep -rn "dale" .`
do # 然而grep出來的,除了路徑,還會顯示匹配到的內容,如/home/dale,這時候就要把這種非路徑的情況給排除掉,用 == 即可
if [[ "$file" == /home/dale* ]];then
# echo $file
continue
fi# cut 出絕對路徑
file_name=`echo $file | cut -d ':' -f 1`
# sed 就是把所有file_name 檔案中的dale 全部替換為user,至此達到目標
sed -i 's/dale/user/g' $
done
# 同樣,先找dale,但是這次不是在 . 即當前資料夾下找,而是在 results/ 資料夾下找
for file in `grep -rn "dale" results/`
do # 和前面思路其實差不多,只不過反其道行之,即:如果grep到的是results/開頭的,那麼說明是我們要找到的相對路徑
if [[ "$file" == results/* ]];then
echo $file
# 同樣cut出相對路徑
file_name=`echo $file | cut -d ':' -f 1`
# 同樣進行替換,不過這次我選擇將dale替換為空(等價於刪除)
sed -i 's/dale//g' $
fidone
如果想直接修改原始檔,而沒有這樣的過程,可以用下面的命令
sed -i 's/properties/property/g' build.xml
這樣,就直接修改了build.xml檔案
2023年8月27日23:26:52
子在川上曰,逝者如斯夫!
批量修改多個檔案內容的指令碼
批量修改多個檔案內容的指令碼 2010年07月30日 如果你是需要修改所有檔案的內容,則將 txt直接替換為 即可。把儲存後的bat或vbs檔案放在需要執行的目錄的根目錄下,執行後將替換掉當前目錄及其子目錄下檔案的所有需要替換的內容。以下為批處理 儲存為bat檔案,雙擊執行,使用前備份檔案。echo...
批量修改多個檔案內容的指令碼
批量修改多個檔案內容的指令碼 2010年07月30日 如果你是需要修改所有檔案的內容,則將 txt直接替換為 即可。把儲存後的bat或vbs檔案放在需要執行的目錄的根目錄下,執行後將替換掉當前目錄及其子目錄下檔案的所有需要替換的內容。以下為批處理 儲存為bat檔案,雙擊執行,使用前備份檔案。echo...
shell 批量替換多個檔案中字串
用sed命令可以批量替換多個檔案中的字串。sed i s 原字串 新字串 g grep 原字串 rl 所在目錄 例如 我要把mahuinan替換為huinanma,執行命令 sed i s mahuinan huinanma g grep mahuinan rl www 這是目前linux最簡單的批...