4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Mac]スクリーンショット・画面収録を日付ごとのディレクトリに自動で保存する

Last updated at Posted at 2021-02-11

この記事で解決できること

  • スクショ・画面の録画を日付別のディレクトリに自動で移動してほしい!
  • さらに言えば今日の日付のディレクトリがなかったら自動で作成されるようにしてそこに移動してほしい!
  • スクショ・録画どちらも同じディレクトリに保存して、それを自動的に画像or動画を判別して前述のフォルダ分けしてほしい!

このあたりを解決していきます

環境

  • macOS: Catalina v10.15.7

概要

Screenshot 2021-02-11 21.08.11.png

こんなことしていきます

方法

スクリーンショット・動画の録画について

  • ここでは「⇧+⌘+4」とか「⇧+⌘+5」で撮れるMac標準機能での方法を解説してますがQuickTime Playerとかでも同じような設定でできるはずです

  • 録画先を決める

    • 「⇧+⌘+5」でオンスクリーンコントロールを表示する
      bab66068f4457009217cf7ab892e7452.png

    • 「オプション」から保存先を任意で設定する

    • (以下ではわかりやすく「~/temp」としてます)

Automatorの設定

  • フォルダアクションを新規作成
    Screenshot 2021-02-11 22.35.16.png

  • 先程のディレクトリ(ここでは「~/temp」)を指定

  • 「シェルスクリプトを実行」を左のアクション一覧から持ってきて以下を指定

    • シェル: 自分の使ってるシェル(今回はzsh)
    • 入力の引き渡し方法: 引数として
    • シェルスクリプト(.bashなら「=」のところを全て「==」にすればいける・・・はず)
ScreenCapture.workflow
ImageSaveDir=/Users/(個人ディレクトリ)/Pictures/ScreenShot/"$(date "+%Y%m%d")"
VideoSaveDir=/Users/(個人ディレクトリ)/Movies/VideoCapture/"$(date "+%Y%m%d")"

file_type=$(file -b --mime "$1")
file_name=$(basename "$1")

# saveDirが存在するかチェック
if [ "${file_type:0:5}" = "image" ]; then
	if [ ! -e $ImageSaveDir ]; then
	    mkdir $ImageSaveDir 
	fi
elif [ "${file_type:0:5}" = "video" ]; then
	if [ ! -e $VideoSaveDir ]; then
	    mkdir $VideoSaveDir 
	fi
fi

# 追加されたファイルを移動
if [ "${file_type:0:5}" = "image" ]; then
	mv "$1" "$ImageSaveDir/$file_name"
elif [ "${file_type:0:5}" = "video" ]; then
	mv "$1" "$VideoSaveDir/$file_name"
fi

全て指定すると以下のようになります。
⌘+Sで名前をつけて保存(ここではScreenCapture.workflow)。

Screenshot 2021-02-11 22.39.47.png

「~/temp」フォルダにファイルが保存された時にこのシェルスクリプトが実行されますが、やってることは

  1. ファイルのMIMEタイプとファイル名を取得(file_typeとfile_name)
  2. MIMEタイプごとに保存先ディレクトリの存在チェックして、なければ作成
  3. MIMEタイプごとに保存先ディレクトリにファイルを移動

です

(一応)フォルダアクションが本当にフォルダに紐付いているかチェック

  • Finderで「~/temp」のあるディレクトリまで移動する
  • 「~/temp」を右クリック→「フォルダアクション設定」→サービスを確認...と出るので「サービスを実行」
  • ちゃんと紐付いてるかチェック
    • 紐付いてなかったら「~/temp」を選択した状態で右下の「+」から先程保存した名前のワークフロー(ここではScreenCapture.workflow)を選択して紐付ける

Screenshot 2021-02-11 23.03.57.png

これでOK!

  • スクショや画面の動画を「~/temp」に保存するとそれぞれ対応した日付フォルダにAutomator君が飛ばしてくれます。
    偉い子!

おまけ的な話

~/"$(date "+%Y")"/"$(date "+%m")"/"$(date "+%d")"
→ex. ~/2021/02/11

ってなってること多い気がしますけど僕はあんまり深くなると色んな日付をいったり来たりするのがめんどくさいので上で紹介した通り

~/"$(date "+%Y%m%d")"
→ex. ~/20210211

ってしてますね(好みの問題ですが!)

参考

4
6
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
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?