개인적인 필요가 있어서 간단히 만든 스크립트입니다.
제가 월드 오브 워크래프트(이하 와우) 희귀몹 스크린샷을 찍어두고 있는데 파일 이름을 이렇게 해두었습니다.
가시대장 점박이 - WoWScrnShot_010707_080229.png
이렇게 한 이유는 이름으로 정렬했을 때 희귀몹 이름이 앞에 나오도록 해서 중복된 것을 쉽게 찾기 위한 것이었습니다.
그런데 이번에 와우 관련 블로그 “Rare Mob in World of Warcraft“를 시작하면서 스크린샷을 찍을 순으로 하려다보니 희귀몹 이름 순으로 찾기가 어려웠습니다. 파일 생성 일시는 전에 포맷 변환을 하면서 변경되어 의미가 없어졌구요.
그래서 간단한 스크린샷 정리 펄 스크립트를 만들었습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#! /usr/bin/perl
use strict;
use warnings;
my @files = glob("*.jpg *.png *.tga");
foreach ( @files ) {
my $new_filename_prefix;
my $new_filename_postfix;
my $file_extension;
my $new_screenshot_datetime;
if ( /^(\d{4})-(\d{2})-(\d{2}) (\d{2})-(\d{2})-(\d{2})/ ) {
# YYYY-MM-DD HH-II-SS 형식으로 생각되는 파일 이름은 건너뛴다
next;
}
if ( /^(.*)WoWScrnShot_(\d{2})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2})(.*)\.(\w+)$/ ) {
$new_screenshot_datetime = "20$4-$2-$3 $5-$6-$7";
$new_filename_prefix = trim_dash($1);
$new_filename_postfix= trim_dash($8);
$file_extension = $9;
}
else {
print "$_ 파일의 스크린샷 일시를 알 수 없음\n";
next;
}
my $new_filename;
$new_filename = $new_filename_prefix;
$new_filename .= " - " if ( length($new_filename_postfix) > 0);
$new_filename .= $new_filename_postfix;
$new_filename = $new_screenshot_datetime." ".$new_filename.".".$file_extension;
rename $_, $new_filename;
}
sub trim_dash {
my $s = shift;
if ( $s =~ /^\s*-\s*(.*)$/ ) {
$s = $1;
}
if ( $s =~ /^(.*?)\s*-\s*$/ ) {
$s = $1;
}
return $s;
}
|
이 스크립트를 와우 스크린샷 파일들이 있는 곳에 넣고 실행시키시면 됩니다.
와우 스크린샷 파일들을 찾아 ‘YYYY-MM-DD HH-II-SS 파일명.확장자’ 형식으로 찾아서 바꿔줍니다. 서브 디렉토리까지 자동으로 찾아들어가 처리 하지는 않습니다.