Nautilusスクリプトで右クッリクからファイル名に日付挿入

ちょっとファイルが散らかってきて何がなんだか分からなくなってきた。
実は、東芝Dinabook R631という超薄型のノートブック(ジャンク)をゲットして整備中です。OSにパスがかかっていてWindowsが起動できずに手放したと言ったところでしょうか。ワクテカで弄っていると、何と、SSDの中にリカバリーファイルが残っていて(隠れたリカバリーエリアが健在だった)、すんなりと出荷時状態にリカバリー出来ました。MS-Office2010まで入っていて超ラッキーと思いきや、弄り過ぎてSSD内のファイル(パーティションも含め)を壊してしまいオジャンになってしまいました。バックアップも取っていなくて、凹みながら気を取り直した後、OS(Windows7)を機体裏のプロダクトキーのシールを頼りにインストールしたのですが、Officeはプロダクトキーが分からずロストしてしまいました。ヌカヨロでバカな私・・・。

電源関係が調子悪かったので中を確認するためのカバーを外すために、近所のHCからヘクスローブレンチを買ってきて開けました。バッテリーが劣化して膨れていたので取り除いて、ついでに中の埃も取って、カバーの傷や汚れをコンパウンドで磨いて取って、まあまあな感じになりました。てか、金属感が出てきたのでマグネシウム合金の機体がカッコ良いですね。メチャ軽いっす(バッテリー無いからね)。
ここまで来ると愛着も湧いてくるので、Windows7からWindows10にアップグレードして、ドライバ類をネットから探して全てセットアップし、BIOSも最新のものにアップデートしました。完璧です・・・Office以外は。

必要ファイルのダウンロードや情報の収集はメインマシンのUbuntuで行ったので、Ubuntuのデスクトップがファイルだらけで収拾がつきません。数日経つと何が何のファイルかも分からなくなり、Nautilusでどうにかしようと思い立ちました。

Windows時代に「Oshiname」というツールを使っていたのを思い出し、これをUbuntuで再現してみたくなりました。「Oshiname」は、ショートカットキーからファイル名に日付などを挿入するプログラムです。

Nautilusの場合はスクリプトをセットすれば、右クリックでできるはず。早速ネットで探してみましたが、なかなか見つけることができず、やっと一つ探し出しました。意外と需要がないのが驚きでした。便利なのに・・・。

スクリプトの設置場所は

/home/ユーザーネーム/.local/share/nautilus/scripts

エディタで新規ファイルを作成して適当な名前を付けます。右クリックの時に表示されるので、分かりやすい名前が良いと思います。そのファイルに下記のスクリプトをコピペして保存します。

.............................................................................................ここから
#!/usr/bin/env python
# coding: utf-8

import sys
import os
import datetime
import shutil

datetime = datetime.datetime.now()
prefix = datetime.strftime('%Y%m%d_%H%M%S_')

if len(sys.argv) == 1:
    command = os.path.split(sys.argv[0])[-1]
    print("usage: {0} file...".format(command))

else:
    for _file in sys.argv[1:]:
        newfile = prefix+_file
        print("New file: {0}".format(newfile))
        shutil.move(_file, newfile)
.............................................................................................ここまで
 
保存したらファイルのプロパティを開き「プログラムとして実行」にチェックを入れて出来上がりです。

Screenshot-新しいファイル のプロパティ




 













Nautilusからリネームしたいファイルを選択して右クリックすると、先ほど保存したスクリプトが追加されているので選択するだけです。

vlcsnap-2017-02-26-22h55m53s138

















エラーがなければ、設定した通りにファイル名が変換されるはずです。

2017_02-26_23:10:32






以上です。

軽くカスタマイズしたい場合は、緑の文字のところを別の表示の仕方とか文字列に変えると使い回しができて良いです。一つあると便利なスクリプトです。作者さん、ありがとうございます!

日時表示のフォーマット

%Y 西暦の4桁の年
%y 西暦の下2桁の年 00 ~ 99
%-y 西暦の下2桁の年 0 ~ 99

%m 01 ~ 12
%-m 1 ~ 12
%b Jan ~ Dec
%h Jan ~ Dec。%b と同じ。
%B January ~ December

%U その年のなかで何番目の週か。日曜を週のはじめとみなして数える。00 ~ 53

曜日
%a Sun, Mon, Tue, Wed, Thu, Fri, Sat
%A Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
%u 1 ~ 7。1が月曜日、7が日曜日
%w 0 ~ 6。0が日曜日、6が土曜日

%d 01 ~ 31
%-d 1 ~ 31
%e 1 ~ 31。%_d と同じで、1桁の場合はスペースで埋める
%j 001 ~ 366。1月1日が001、うるう年の12月31日が366
%-j 1 ~ 366。1月1日が1、うるう年の12月31日が366

%H 00 ~ 23
%-H 0 ~ 23
%k 0 ~23。 %_H と同じで、1桁の場合はスペースで埋める
%I 01 ~ 12
%-I 1 ~ 12
%l 1 ~12。 %_I と同じで、1桁の場合はスペースで埋める

%M 00 ~ 59
%-M 0 ~ 59

%S 00 ~ 59
%-S 0 ~ 59
%s UNIX時刻 (1970年1月1日0時UTCからのうるう秒を考慮しない秒数)
%N ナノ秒。000000000 ~ 999999999

その他
%D %m/%d/%y と同じ。例 03/20/16
%F %Y-%m-%d と同じ。例 2016-03-20
%R %H:%M と同じ。例 21:49
%T %H:%M:%S と同じ。例 21:49:10
%% % という文字
%n 改行
%t タブ

早見表

%H 時 (00~23)
%I 時 (01~12)
%k 時 ( 0~23)
%l 時 ( 1~12)
%M 分 (00~59)
%p AM あるいは PM のロケール(国や地域に合わせた文字列)
%r 12時間形式の時刻 (HH:mm:ss [AP]M)
%s 1970-01-01 00:00:00 UTC からの秒数
%S 秒 (00~61)
%T 24時間形式の時刻 (HH:mm:ss)
%a ロケールによる省略形の曜日の名前 (Sun~Sat)
%A ロケールによる完全に表記した曜日の名前(Sunday~Saturday)
%b ロケールによる省略形の月の名前 (Jan~Dec)
%B ロケールによる完全に表記した月の名前(January~December)
%c ロケールによる日付と時刻 (Sat Nov 04 12:02:33 EST 1989)
%d 日(月内通算日数) (01~31)
%D 日付 (MM/DD/YY)
%j 年内通算日数 (001~366)
%m 月 (01~12)
%w 週のうちの曜日(0~6)で0が日曜日に対応
%x ロケールによる日付の表現 (MM/DD/YY)
%y 西暦の下2けた (00~99)
%Y 年 (1970~)