I've been using GPRename to batch-rename files; this is rather more efficient than individually correcting each file, but still seems to be less efficient than it might be, primarily because either I don't understand the regex syntax used, or because the regex implementation is incomplete1
Given a list of files of the following syntax:
(01) - title of file1.avi
(02) - title of file2.avi
(03) - title of file3.avi
I attempted to use the 'replace' (with the regex option selected, the case-sensitive option deselected):
(\(\d{2}\))
The preview then shows (given that I've specified no 'replace with' option as yet):
title of file1.avi
title of file2.avi
title of file3.avi
Which is great, clearly the regex is identifying the correct group (the (01)
). Now, what I was hoping to do (using the JavaScript syntax) in the 'replace with' option is use:
$1
(I also tried using '$1'
, \1
and '\1'
)
This was just to check that I could access the matched group, and it seems I can't, the matched group is, as I suppose might be expected, replaced with the literal replacement string.
So, my question: is it possible to match a particular group of characters, in this case the numbers within the brackets, and then insert those into the replacement string? Therefore:
(01) title of file1.avi
(02) title of file2.avi
(03) title of file3.avi
Becomes:
01 title of file1.avi
02 title of file2.avi
03 title of file3.avi
- I absolutely suspect the former, personally.
Unfortunately, it appears you cannot; and that it's an incomplete regex implementation at fault.
This line at the end of all the GPRename locale translations seems to make that obvious:
Since you are familiar with Perl regular expressions, may I recommend you use the excellent
rename
command-line utility instead?-n
switch first to get a preview.\((\d{2})\)
, with the grouping inside the escaped parentheses.Example:
rename
with the-v
(verbose) switch and drop the-n
to actually perform the renaming.In GPRename, you can use Regular Expression like this:
Where:
You can try it. I've used \1 or \$1, but it get me \ or \$ as simple text. It is strange, but it is so.