
仕事で、大量にあるファイルの一部分のみをリネームしてコピーを行いたい事があったので、その備忘。
イメージとしては、以下のようなファイルがあって、それの一部、例えば以下の例だとhostname_aaa_*をhostname_bbb_*へリネームコピーしたい、といった具合。
shell[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
こういった場合に、いちいちファイルを一個づつコピーするなんて面倒な事はしたくない。
という訳で、以下のコマンドで一括コピーを行う事にした。
bash
for i in `ls *コピー元*`; do cp $i `echo $i | sed "s/置換前文字列/置換後文字列/g"`; done
shell[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ファイルとかでホスト名ごとに作成されている場合とか(今回の場合それ)に使えるだろう。