Ubuntuで撮影したスクショを日付順に整理するコマンドかいた

自分しか使わなさそうツールです。

Ubuntuではスクショを取ると、~/PicturesScreenshot from 2021-01-03 08-28-12.pngみたいな名前でスクショが保存されます。 放置しているとスクショが溜まって大変なので、年/月/日でディレクトリを切って、そこに移動させるスクリプトを書きました。 Perlでファイル操作するときは最近はPath::Tinyが以上に便利でいいですね。

#!/usr/bin/env perl
use strict;
use warnings;
use Path::Tiny;

my $pictures_path = shift // $ENV{"HOME"}."/Pictures";
my $pictures_dir = path($pictures_path);

my $screenshot_reg = qr/Screenshot from (\d{4})-(\d{2})-(\d{2}) (\d{2}-\d{2}-\d{2}\.\w+)/;
#Screenshot from 2021-01-03 08-28-12.png

for my $file ($pictures_dir->children(qr/Screenshot from/)) {
  if ($file !~ /$screenshot_reg/) {
    print "[ERRPR] failed parse", $file->[0],"\n";
  }

  my $year         = $1; #2021
  my $month        = $2; #01
  my $day          = $3; #03
  my $picture_name = $4; #08-28-12.png

  my $new_picture = path("$pictures_dir/Screenshot/$year/$month/$day/$picture_name");
  $new_picture->touchpath;
  $file->move($new_picture);
}