在我的目录中,我有很多名为的*.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'