Вот острота, которая требует только /bin/sh
(это только работает на единственный каталог, однако):
for f in ./*.xml; do cp "$f" "${f%cfg.xml}cfgbk.xml"; done
Принятие Вас имеет удар 4 + (если Вы не знаете, Вы, вероятно, делаете; свериться bash --version
), можно использовать globstar для рекурсивности:
shopt -s globstar
for f in ./**/*.xml; do cp "$f" "${f%cfg.xml}cfgbk.xml"; done
Вы могли бы хотеть рассмотреть более четкую схему именования для своих резервных копий, однако - я предпочту что-то как добавление '.backup' к именам файлов.
shopt -s globstar
for f in ./**/*.xml; do cp "$f" "$f".backup; done
outputs