LoginSignup
23
5

More than 3 years have passed since last update.

CSVから一括でファイル名を変更するMacアプリを作った

Last updated at Posted at 2020-12-02

副題: シェルスクリプトをMacアプリにできるAutomatorが凄い!

アプリのダウンロードはこちら

すべてのはじまり

デザイン部の社員から「約600個の画像の名前を一括で変更したい。変更前と変更後のファイル名はExcelシートにまとまっている」と相談された。

そのスプレッドシートを見せてもらうと、以下のような感じ。
スクリーンショット 2020-11-30 20.12.37.png

ちなみに今までは全部人力で名前変更していたらしい。そ れ は ヤ バ イ

その社員はMacだったので、mvコマンドをスプレッドシートで生成し、それをコピペしてターミナルに貼ってもらう方法を提案した。
スクリーンショット 2020-11-30 20.11.38.png
【参考】Macでファイル名変更リストを作成して、ターミナルから大量ファイルを一発でリネームする方法!

このやり方を直接レクチャーし、とても喜んでもらえた。私は満足して退勤し、お酒を飲んで寝ようとした。

が、

......

寝られないのである。

なんだろう......このモヤモヤする気持ちは......

エンジニアでない人にターミナルを起動させるのは、負けではないか。

私はそう思ったのである。

エンジニアの端くれとして、このまま寝るわけにはいかない。

というわけでMacアプリを作る

1. Bashを書く

まずはささっとBashを書く。

引数は2つ。CSVファイルのパスと対象ディレクトリのパス。

返り値はリネーム後のファイルが入ったディレクトリのパス。

やりたいことは「リネーム」だが、実際にはcpコマンドでコピーして元ファイルを残すようにした。

cp-based-on-csv.sh

CSV_FILE=$1
FILE_DIR=$2
NEW_FILE_DIR=${FILE_DIR}_$(date +"%Y%m%d_%H%M%S")
mkdir $NEW_FILE_DIR
for row in $(cat $CSV_FILE)
do
  col1=$(echo "$row" | cut -d ',' -f 1)
  col2=$(echo "$row" | cut -d ',' -f 2)
  cp "${FILE_DIR}/${col1}" "${NEW_FILE_DIR}/${col2}"
done
echo "$NEW_FILE_DIR"

2. AutomatorでMacアプリにする

Automatorを起動
Automatorの起動
新規作成の画面で「アプリケーション」を選ぶ
アプリケーションを選ぶ
以下ではこの画面でビジュアルプログラミングしていく
Automatorのメイン画面
まずは「ファイルを開く」ダイアログを2つ用意し、
Finder項目の選択を求める
その2つを引数にシェルスクリプトを実行させ、
bashを実行する
結果をFinderで表示する。
Finderで表示する
まとめると以下の通り。
完成形.png
さらに確認画面をいくつか追加した。キャンセルを押せばアプリを途中で終了できるので便利。
確認画面を出す
Appとして書き出せば...
書き出す1
書き出す2

完成!

動作確認をする。作成したアプリをクリックしたら、
自作アプリの起動
まずはCSVの選択画面が出て、
CSVの選択画面
次にフォルダの選択画面が出て、
フォルダの選択画面
リネーム後のファイルが表示される。完璧!
リネーム後のファイルの表示

誰でもかんたんにMacアプリが作れるAutomator、素晴らしすぎる。

おわり

デザイン部に公開したらめちゃくちゃ感謝してもらえた😊

ダウンロードと使い方はこちら

23
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
5