Linuxで複数ファイルをリネームして一括コピーする

仕事で、大量にあるファイルの一部分のみをリネームしてコピーを行いたい事があったので、その備忘。
イメージとしては、以下のようなファイルがあって、それの一部、例えば以下の例だとhostname_aaa_*をhostname_bbb_*へリネームコピーしたい、といった具合。

[root@localhost work]# ls -la /work
合計 32
drwxr-xr-x.  2 root root 4096  1月  3 09:20 .
dr-xr-xr-x. 18 root root 4096  1月  3 09:08 ..
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_000.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_001.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_002.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_003.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_004.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_005.txt
[root@localhost work]# grep "" /work/*
/work/hostname_aaa_000.txt:aaa_000
/work/hostname_aaa_001.txt:aaa_001
/work/hostname_aaa_002.txt:aaa_002
/work/hostname_aaa_003.txt:aaa_003
/work/hostname_aaa_004.txt:aaa_004
/work/hostname_aaa_005.txt:aaa_005

こういった場合に、いちいちファイルを一個づつコピーするなんて面倒な事はしたくない。
という訳で、以下のコマンドで一括コピーを行う事にした。

for i in `ls *コピー元*`; do cp $i `echo $i | sed "s/置換前文字列/置換後文字列/g"`; done

[root@localhost work]# ls -la /work
合計 32
drwxr-xr-x.  2 root root 4096  1月  3 09:25 .
dr-xr-xr-x. 18 root root 4096  1月  3 09:08 ..
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_000.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_001.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_002.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_003.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_004.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_005.txt
[root@localhost work]#
[root@localhost work]# grep "" /work/*
/work/hostname_aaa_000.txt:aaa_000
/work/hostname_aaa_001.txt:aaa_001
/work/hostname_aaa_002.txt:aaa_002
/work/hostname_aaa_003.txt:aaa_003
/work/hostname_aaa_004.txt:aaa_004
/work/hostname_aaa_005.txt:aaa_005
[root@localhost work]# for i in `ls /work/hostname_aaa_*.txt`; do cp $i `echo $i | sed "s/aaa/bbb/g"`; done
[root@localhost work]#
[root@localhost work]# ls -la /work
合計 56
drwxr-xr-x.  2 root root 4096  1月  3 09:26 .
dr-xr-xr-x. 18 root root 4096  1月  3 09:08 ..
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_000.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_001.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_002.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_003.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_004.txt
-rw-r--r--.  1 root root    8  1月  3 09:20 hostname_aaa_005.txt
-rw-r--r--.  1 root root    8  1月  3 09:26 hostname_bbb_000.txt
-rw-r--r--.  1 root root    8  1月  3 09:26 hostname_bbb_001.txt
-rw-r--r--.  1 root root    8  1月  3 09:26 hostname_bbb_002.txt
-rw-r--r--.  1 root root    8  1月  3 09:26 hostname_bbb_003.txt
-rw-r--r--.  1 root root    8  1月  3 09:26 hostname_bbb_004.txt
-rw-r--r--.  1 root root    8  1月  3 09:26 hostname_bbb_005.txt
[root@localhost work]#
[root@localhost work]# grep "" /work/hostname_bbb_00*
/work/hostname_bbb_000.txt:aaa_000
/work/hostname_bbb_001.txt:aaa_001
/work/hostname_bbb_002.txt:aaa_002
/work/hostname_bbb_003.txt:aaa_003
/work/hostname_bbb_004.txt:aaa_004
/work/hostname_bbb_005.txt:aaa_005

Ansibleのyamlファイルとかでホスト名ごとに作成されている場合とか(今回の場合それ)に使えるだろう。