我在不同的文件夹中有 conf.yml 文件,如下所示。
/var/loyalty-badge/conf/conf.yml
/var/loyalty-level/conf/conf.yml
/var/promotion/conf/conf.yml
/var/featured/conf/conf.yml
现在我希望所有的人conf.yml
都复制一个文件夹,例如conf
目标文件应该是这样的
conf/loyalty-badge_conf.yml
conf/loyalty-level_conf.yml
conf/promotion_conf.yml
conf/featured_conf.yml
你能建议一个脚本吗?
答案1
您可以使用一个简单的通配符模式枚举…/conf/conf.yml
文件。用一个for循环迭代文件。
for x in /var/*/conf/conf.yml; do …
您需要提取紧随其后的部分/var
。你可以这样做外壳扩展功能:去除前缀和后缀。分两步进行:删除/var
前缀,然后删除/conf/conf.yml
后缀。
y=${x#/var}; y=${y%%/*}
现在把它们粘在一起。
for x in /var/*/conf/conf.yml; do …
y=${x#/var}; y=${y%%/*}
cp -p "$x" "conf/${y}_conf.yml"
done
请注意,大括号在 中是必需的${y}_conf.yml
,因为会被解析为“后跟文本$y_conf.yml
的值”。y_conf
.yml