我的目錄結構如下:
Folder1/
|____file.txt
Folder2/
|____file.txt
Folder3/
|____file.txt
:
Foldern/
|____file.txt
目錄中的每個 .txt 檔案都有一個我想用目錄名稱替換的單字。
文件.txt:
"name": "Engineering",
我希望用目錄名稱替換“Engineering”一詞,例如“Folder1”:
"name": "Folder1"
我的初步嘗試如下:
for f in Folder*; do (cd $f; echo $f; sed -i -e "s/Engineering/Folder*/" file.txt); done
但是,sed 指令似乎沒有看到Folder*
資料夾編號。
答案1
無需cd
進入目錄。您可以循環檔案路徑並提取資料夾名稱:
for file in Folder*/file.txt; do
sed -i -e "s/Engineering/${file%%/*}/" "$file"
done
參數擴充功能${file%%/*}
刪除最長的後綴/*
並保留資料夾名稱。