仕事上、クライアントからいただいたファイルをリサイズしてwebサイトに更新することがあります。
頂いたファイルの拡張子「.JPG」のままアップしたら、ローカル上ではうまく表示されていたんですが、サーバー上だとLightboxがうまく表示されませんでした。
また、数字から始まるファイル名でもうまく動きませんでした。
毎回いただいたファイルの拡張子「.JPG」を小文字の「.jpg」にし、頭文字に「DSC_」をつけていました。
手作業でファイル名変更していたのですが、もっといい方法がないかと考えていたところ、やっとみつかりました。
macはUNIX系OSですので、unixコマンドが使えます。
シェルを作成して、ターミナルからシェル実行すればいいわけです!
自宅のパソコンがWindowsなのでキャプチャがなくてわかりにくくて申し訳ないのですが、テキストで説明します。
シェル作成
まずは、テキストエディタを使用してシェルを作成します。
下記を適当な名前で保存します。私は、「mv.sh」という名前で保存しました。
#!/bin/sh
for filename in *.JPG;
do
mv $filename DSC_${filename%.JPG}.jpg;
done
/* mvで変換できるので削除 2015/11/9
rename -A DSC_ *.jpg*/
下記部分は、「シェルを記述しますよ!」という決まり文句なのでシェル作成時の一行目は必ずこれを記入します。
#!/bin/sh
下記部分はフォルダ内にある「.JPG」拡張子のファイルを「.jpg」に変換しますという記述です。
「∗」は、ワイルドカードと言われ、どんな文字が入っていても検索対象としたい時に使用します。
for文でフォルダ内のファイルを1ファイルずつ処理していきます。
「mv 変換前ファイル名 変換後ファイル名」でファイル名変換を行うunixコマンドです。
変換後ファイル名の部分は、ファイル名の頭文字に「DSC_」をつけ、%直後に書いた文字列「.JPG」と一致したら「.JPG」部分を取り除くという記述です。
for filename in *.JPG;
do
mv $filename DSC_${filename%.JPG}.jpg;
done
その後、ファイル名の頭文字に「DSC_」をつけるという処理です。
下記で先ほど拡張子を変換した、「.jpg」ファイルを対象に「DSC_」をつけるという命令です。
なんで「-A」ついているのか記憶にないですが、これでうまく動いています。
/* mvで変換できるので削除 2015/11/9
rename -A DSC_ *.jpg*/
renameコマンドは、最初からMacに入ってなかったかもしれません。
何をインストールしたのか覚えていませんが、下記サイトなど参考になるかもしれません。
目次に戻る
対象フォルダにシェルファイルを配置
今回、ファイル名変更したい対象フォルダ内に先ほど作成した「mv.sh」を配置します。
例えば、「testフォルダ」内にある「1.JPG」「2.JPG」「3.JPG」ファイル名を「DSC_1.jpg」「DSC_2.jpg」「DSC_3.jpg」ファイル名に変更したい場合、「testフォルダ」直下に「mv.sh」を配置します。
目次に戻る
ターミナルでシェル実行
ターミナルで作成したシェルを実行します。
ターミナルは、「アプリケーションフォルダ」内の「ユーティリティフォルダ」内にあるターミナル.appを起動します。
起動したら「cd ディレクトリ名」と打ってエンターを押したら、対象ディレクトリに移動します。
今回ですと、「cd testフォルダのあるディレクトリ」を指定すればいいです。
ディレクトリ名を全部入力すると階層が深くて大変なので、「cd 」と打った後、対象フォルダをドラッグするとディレクトリ名が記入されます。
cd の後は半角空白を必ず入れてください。
移動したら、ターミナルに下記コマンドを打ってエンターを押します。
これでファイル名が変換されます。
/bin/bash mv.sh
目次に戻る