次のように、別のフォルダに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
。あなたはこれを行うことができますシェル拡張機能:プレフィックスとサフィックスを削除します。 2つのステップで行います。/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