我的目录结构如下:
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%%/*}
删除最长的后缀/*
并保留文件夹名称。