在我的目录中,我有很多*.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"
答案 0 :(得分:3)
使用带替换的参数扩展:
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'