将目录名插入 bash 中分别命名的文件名
Insert dirnames into respectively named filenames in bash
在我的目录中,我有很多 *.yml
个文件,名称如下:
work-arran.yml
work-cap.yml
work-exposed.yml
work-humax.yml
work-instruc.yml
work-kiln.yml
work-lex.yml
work-merc.yml
以及具有相同名称但使用下划线而不是破折号的目录:
work_cap
work_exposed
work_humax
work_instruc
work_kiln
work_lex
work_merc
我想把 yaml 记录 grid_pool: dir_name_here
分别放入每个
*.yml
自动归档,其中 dir_name_here 是每个文件的名称
文件各自的目录。
试过这个,虽然它可以工作,但它附加了所需的行
*.yml 文件的下划线版本,而不是现有的虚线。
如何更改最后一个 fn.yml
以便它再次替换 _
为 -
?
ls *.yml | sed 's/-/_/g' | sed 's/.yml//g' | xargs -n1 -I fn bash -c "echo ' grid_pool: fn' >> fn.yml"
使用带替换的参数扩展:
for file in *.yml ; do
dirname=${file/-/_}
echo " grid_pool: ${dirname%.yml}" >> "$file"
done
您可以对 xargs
使用相同的方法,但我担心它会更慢,因为它会为每个文件启动一个新的 shell:
... | xargs -I fn bash -c 's=fn; echo " grid_pool: fn" >> ${s/_/-}.yml'
在我的目录中,我有很多 *.yml
个文件,名称如下:
work-arran.yml
work-cap.yml
work-exposed.yml
work-humax.yml
work-instruc.yml
work-kiln.yml
work-lex.yml
work-merc.yml
以及具有相同名称但使用下划线而不是破折号的目录:
work_cap
work_exposed
work_humax
work_instruc
work_kiln
work_lex
work_merc
我想把 yaml 记录 grid_pool: dir_name_here
分别放入每个
*.yml
自动归档,其中 dir_name_here 是每个文件的名称
文件各自的目录。
试过这个,虽然它可以工作,但它附加了所需的行 *.yml 文件的下划线版本,而不是现有的虚线。
如何更改最后一个 fn.yml
以便它再次替换 _
为 -
?
ls *.yml | sed 's/-/_/g' | sed 's/.yml//g' | xargs -n1 -I fn bash -c "echo ' grid_pool: fn' >> fn.yml"
使用带替换的参数扩展:
for file in *.yml ; do
dirname=${file/-/_}
echo " grid_pool: ${dirname%.yml}" >> "$file"
done
您可以对 xargs
使用相同的方法,但我担心它会更慢,因为它会为每个文件启动一个新的 shell:
... | xargs -I fn bash -c 's=fn; echo " grid_pool: fn" >> ${s/_/-}.yml'