Mac で撮ったスクリーンキャプチャのファイル名に含まれる半角スペースを Automator でどうにかする
2018-10-22Mac でスクリーンキャプチャを撮ると、スクリーンショット 2018-10-22_22.27.08.png
のような感じでファイル名に半角スペースが含まれてしまいます。
スクリーンショット
の部分はコマンドで変更できます (無しにもできる) が、その部分と日付の間には半角スペースが入ってしまいます。
コマンドラインでファイルを扱う際には半角スペースがあると面倒なので、どうにかして半角スペースを無くしたい、というのが今回の目的です。
とりあえず、半角スペースをアンダースコア _
に変換することをゴールにします。
前準備
スクリーンキャプチャの保存先を適当なフォルダに設定します。
$ defaults write com.apple.screencapture location /Users/hoge/Pictures/_ScreenCaptureTmp
$ killall SystemUIServer
今回は /Users/hoge/Pictures/_ScreenCaptureTmp
とします。(TMP_SC_DIR
)
スクリンキャプチャはこのフォルダに作成されます。半角スペースをファイル名に含んだ状態で。
そして、本当にスクリーンキャプチャを保存したいディレクトリを用意します。
今回は /Users/hoge/Dropbox/200_photos/001_SC_MBP
とします。(COMP_SC_DIR
)
どうするか (概要)
- 以下を実現するスクリプトを作ります (今回は Python で作りました)
TMP_SC_DIR
内のファイルのファイル名に含まれる半角スペースをアンダースコアに置換する- ファイル名を置換したファイルを
COMP_SC_DIR
に移動する
- スクリーンキャプチャを撮るたびに 1 のスクリプトを実行する
どうするか (詳細)
1 を実現するスクリプトを作成
import glob
import os
TMP_SC_DIR = '/Users/hoge/Pictures/_ScreenCaptureTmp/'
COMP_SC_DIR = '/Users/hoge/Dropbox/200_photos/001_SC_MBP/'
i = 1
tmp_sc_list = glob.glob(TMP_SC_DIR + '*.png')
if len(tmp_sc_list) == 0:
print('no screen capture.')
else:
for file in tmp_sc_list:
os.rename(
file, file.replace(TMP_SC_DIR, COMP_SC_DIR).replace(' ', '_'))
i += 1
print(
'{} screen capture(s) rename and move, completely.'
.format(str(len(tmp_sc_list))))
これを適当な場所に置きます。
今回は /Users/hoge/Projects/system/rename_and_move_screen_capture.py
とします。
Automator でフォルダアクションを作成
Automator は Mac での様々な操作を自動化してくれるアプリケーションで、デフォルトで入っています。 今回はその Automator で
1.TMP_SC_DIR
を監視する
2. ファイルが置かれたら rename_and_move_screen_capture.py
を実行する
3. 実行結果を通知する
というフローを実行するフォルダアクションを作成します。
設定についてはキャプチャのとおりです。
変数の値を設定 は、スクリプトを実行したときに出力しているメッセージを変数に設定して、通知の際に表示させるために入れています。
で、これを適当な名前で保存してスクリーンキャプチャを撮って数秒後に通知がきます。
これでスクリーンキャプチャの半角スペース問題はなんとかなりました。
comments powered by Disqus