概要
MySQLWorkbenchでCSVファイルをダウンロードすると、文字コードがBOM無しのUTF-8のため、エクセルで開いたときに文字化けしてしまうことがあります。
ダウンロードしたCSVファイルの文字コードを自動でBOMを付けるツールを作成しました。
ツール作成方法
-
各種コマンドをインストール
brew install fswatch brew install nkf
-
下記のファイルを作成
watch_csv.sh#!/bin/bash file_name="" # スクリプトのプロセスが既に実行中かどうかを確認 if pgrep -f "$(basename "$0")" > /dev/null 2>&1; then exit 1 fi # ~/Downloads フォルダを監視 fswatch ~/Downloads | while read event; do # 最新のCSVファイルを取得 new_file=$(find ~/Downloads -type f -name "*.csv" -print0 | xargs -0 ls -t | head -n 1) # 前回処理したファイルと同じ場合、スキップ [[ "$new_file" == "$file_name" ]] && continue # CSVファイルをUTF-8-BOMに変換 nkf --overwrite --oc=UTF-8-BOM "$new_file" # 処理済みのファイル名を保存 file_name="$new_file" done
-
zshrcにコマンドを追加
vi ~/.zshrc
.zshrcbash ~/watch_csv.sh &
補足
-
fswatch
コマンド
fswatch
のread event
は、ファイルが追加、編集された際にスクリプトを実行します。ファイルが編集された場合にもイベントを検知してしまうため、スクリプト内では、すでに処理済みのファイルが再度実行されないよう工夫しています。 -
find
とxargs
の連携
find
で指定したフォルダ内のCSVファイルをリストアップし、xargs
でその結果をls
に渡して最新のファイルを取得しています。