大量のファイル名置換(rename)

前回数字のファイルをたくさん作りましたが、あまり実用的ではありません。
ファイル名を実用的な名前に置換したいと思います。
大量にあるので、mvでは骨が折れます。renameを使います。

書式は
rename ‘s///’ ワイルドカード
s///の使い方は、s/置換前/置換後/ で、もちろん正規表現が使えます。

まずは準備として数字のファイルを100個作ります。

~$ touch `seq 100`
~$ ls
1 14 2 25 30 36 41 47 52 58 63 69 74 8 85 90 96
10 15 20 26 31 37 42 48 53 59 64 7 75 80 86 91 97
100 16 21 27 32 38 43 49 54 6 65 70 76 81 87 92 98
11 17 22 28 33 39 44 5 55 60 66 71 77 82 88 93 99
12 18 23 29 34 4 45 50 56 61 67 72 78 83 89 94
13 19 24 3 35 40 46 51 57 62 68 73 79 84 9 95
~$

置換してみます。test数字.txtというファイル名に置換します。

~$ rename 's/^(\d+)$/test$1.txt/' *
~$ ls
test1.txt test27.txt test45.txt test63.txt test81.txt
test10.txt test28.txt test46.txt test64.txt test82.txt
test100.txt test29.txt test47.txt test65.txt test83.txt
test11.txt test3.txt test48.txt test66.txt test84.txt
test12.txt test30.txt test49.txt test67.txt test85.txt
test13.txt test31.txt test5.txt test68.txt test86.txt
test14.txt test32.txt test50.txt test69.txt test87.txt
test15.txt test33.txt test51.txt test7.txt test88.txt
test16.txt test34.txt test52.txt test70.txt test89.txt
test17.txt test35.txt test53.txt test71.txt test9.txt
test18.txt test36.txt test54.txt test72.txt test90.txt
test19.txt test37.txt test55.txt test73.txt test91.txt
test2.txt test38.txt test56.txt test74.txt test92.txt
test20.txt test39.txt test57.txt test75.txt test93.txt
test21.txt test4.txt test58.txt test76.txt test94.txt
test22.txt test40.txt test59.txt test77.txt test95.txt
test23.txt test41.txt test6.txt test78.txt test96.txt
test24.txt test42.txt test60.txt test79.txt test97.txt
test25.txt test43.txt test61.txt test8.txt test98.txt
test26.txt test44.txt test62.txt test80.txt test99.txt
~$

実のところ、生成するファイルの名前に今回のように規則性があれば、ブレース展開の方が早いです。

~$ touch test{1..100}
test1.txt     test27.txt    test45.txt    test63.txt    test81.txt
test10.txt    test28.txt    test46.txt    test64.txt    test82.txt
test100.txt   test29.txt    test47.txt    test65.txt    test83.txt
test11.txt    test3.txt     test48.txt    test66.txt    test84.txt
test12.txt    test30.txt    test49.txt    test67.txt    test85.txt
test13.txt    test31.txt    test5.txt     test68.txt    test86.txt
test14.txt    test32.txt    test50.txt    test69.txt    test87.txt
test15.txt    test33.txt    test51.txt    test7.txt     test88.txt
test16.txt    test34.txt    test52.txt    test70.txt    test89.txt
test17.txt    test35.txt    test53.txt    test71.txt    test9.txt
test18.txt    test36.txt    test54.txt    test72.txt    test90.txt
test19.txt    test37.txt    test55.txt    test73.txt    test91.txt
test2.txt     test38.txt    test56.txt    test74.txt    test92.txt
test20.txt    test39.txt    test57.txt    test75.txt    test93.txt
test21.txt    test4.txt     test58.txt    test76.txt    test94.txt
test22.txt    test40.txt    test59.txt    test77.txt    test95.txt
test23.txt    test41.txt    test6.txt     test78.txt    test96.txt
test24.txt    test42.txt    test60.txt    test79.txt    test97.txt
test25.txt    test43.txt    test61.txt    test8.txt     test98.txt
test26.txt    test44.txt    test62.txt    test80.txt    test99.txt

 

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA