【Ubuntu】スクリーンショットのファイル名フォーマットを変更する方法
ブログの中でスクショを乗せることがあるんですが、Ubuntuの標準アプリで撮ったスクリーンショットのファイル名が、デフォルトだと空白文字を含んだ状態で保存されてしまいます。 これをブログに載せようと思ったら、空白文字をいちいちURLエンコードしないといけないことに気づいてしまいました。 そこで、あれこれやって空白文字をアンダースコアに置き換えて保存する方法を見つけたので共有します。 どうやったか まず標準アプリでフォーマットを指定できるか調べてみましたが、これはどうやらできないみたいです。 (設定項目に名前のフォーマットを指定するプロパティがありませんでした。) dconfエディターで確認した様子 そこで、しょうがないのでスクリーンショットが保存されるディレクトリを監視して、ファイルが作成されたらファイル名を空白文字からアンダースコアに書き換えるshを実装しました。 (ちなみに、shの実装は全部ChatGPTにおまかせしちゃいました。) 監視のためのサービスはsystemdに登録し、再起動してもちゃんと動いてくれるようにしました。 実装手順 まずはディレクトリ監視に必要なライブラリをインストールしておきます。 sudo apt install inotify-tools インストールできたら、スクリーンショットの保存先ディレクトリを監視してファイル名を置き換えるshを実装します。 以下が作成したshファイルです。 #!/bin/bash ### BEGIN INIT INFO # Provides: screenshot_monitor # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Screenshot Monitor # Description: Monitors directory for new screenshots and performs actions ### END INIT INFO # スクリーンショットの保存先ディレクトリ screenshot_dir="/home/[username]/Pictures/スクリーンショット" # 監視対象のイベントを指定してinotifywaitを実行し、新しいファイルが追加された場合にスクリプトを実行する inotifywait -m -e create -e moved_to "$screenshot_dir" | while read -r directory event filename; do # スペースをアンダースコアに置換 new_filename=${filename// /_} new_filepath="$screenshot_dir/$new_filename" # ファイル名の変更 mv "$directory$filename" "$new_filepath" done ([username]の部分は自身のユーザー名に置き換えてください) ...