ファイル名を一括変更 Windowsエクスプローラーとシェルスクリプト

バイオインフォ道場、くまぞうです。

バイオインフォマティクスでは、データファイルが大量になることがあります。いつも頭を悩ませるのがデータの管理です。たまにファイル名を一括で変更したいときがありますが、便利な方法があるので紹介したいと思います。

Windows エクスプローラーで一括変換

スポンサーリンク



エクスプローラー(Windows)でファイル名を一括変換するのは意外と簡単です。

まず、エクスプローラーでファイルがたくさん入ったフォルダを開いて、ファイル名を一括で変更したいファイルを複数選択します。(シフトキーを押しながら選択すると連続選択、コントロールキーを押しながら選択すると個別選択できます。)

次に、「右クリック」で「名前の変更」を選択するか、F2キー(名前変更のショートカット)を押します。1つのファイルに対して、名前編集モードになるので「共通して使いたい名前」を入力します。

すると、選択していたファイル名が『「共通して使いたい名前」 (連番).拡張子』という形式で一括で変更されます。例えば、日付毎に名前がつけられた画像データやログファイル、一連の関連資料を一括でリネームする場合などに便利です。

bash シェルスクリプトで一括変換

bashのシェルスクリプトでファイル名を一括変換してみます。

コメント行が入っているので少し長く見えますが、実際は数行の処理です。処理を細かくみると、引数の処理for文部分文字列変数と算術演算などを使っています。興味がある方は、機能を盛り込んで改良するなどして、理解を深めて頂ければ幸いです。

スクリプト

my_filerename.sh
#! /bin/bash

COMMON=$1 # 最初の引数「共通して使いたい名前」
shift     # 引数をスライド

COUNT=1   # 枝番の初期値
for x     # スライド後の引数に対してリネーム処理
do
    # 拡張子を取得
    EXT=${x##*.}

    # 確認も含めたリネーム内容表示(★)
    echo "$x -> ${COMMON}_${COUNT}.${EXT}"

    # リネーム処理(★が確認できてからコメントを外すと良いです)
    # mv $x ${COMMON}_${COUNT}.${EXT}

    # 枝番をカウントアップ
    COUNT=`expr ${COUNT} + 1`
done

実行と結果

$ ls *.txt
aaa.txt  bbb.txt  ccc.txt
$ chmod +x ./my_filerename.sh
# testは共通部分。*.txtに対して処理実行
$ ./my_filerename.sh test *.txt

aaa.txt -> test_1.txt
bbb.txt -> test_2.txt
ccc.txt -> test_3.txt
$ ls *.txt
test_1.txt  test_2.txt  test_3.txt
スポンサーリンク