plugin-cfg.xml
バックアップして同じディレクトリに保存したい他のファイルを含むいくつかのディレクトリがあります。
例えば
Plug6_a1/plugin-cfg.xml
Plug6_a2/plugin-cfg.xml
Plug6_a3/plugin-cfg.xml
各ディレクトリにplugin-cfg.xml
名前変更をコピーする方法は?plugin-cfgbk.xml
答え1
find Plu*_a* -type f -name plugin-cfg.xml -exec \
sh -c 'cp "$1" "$(dirname "$1")"/plugin-cfgbk2.xml ' sh {} \;
名前で始まり、含まれているディレクトリー内の各ファイルのplugin-cfg.xml
同じディレクトリーにコピーを作成します。Plu
_a
plugin-cfg.xml
plugin-cfgbk2.xml
答え2
dest=/path/to/backup/destination;
find plu6_a1 plu61_a2 -type f -iname '*.xml' -print0 | while IFS= read -rd '' f; do
cp -- "$f" "${dest%/}/${f%.xml}-bk.xml"
done
plu6_a1 plu61_a2で各XMLファイルを見つけてコピーを作成し、コピーにサフィックス-bk.xmlを追加してから「$ dest」に移動します。
編集:このコードはBashで書かれており、GNUまたはBSD find(1)も必要です。
答え3
必要な行は次のようになります/bin/sh
(ただし、これは単一のディレクトリでのみ機能します)。
for f in ./*.xml; do cp "$f" "${f%cfg.xml}cfgbk.xml"; done
bash 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