
Hello Craig, On 5/6/17, Craig Sanders via luv-main <luv-main@luv.asn.au> wrote:
On Fri, May 05, 2017 at 08:16:52PM +1000, Mark Trickett wrote:
Most rename scripts you'll write are just one or more 's/search/replace/' one-liner statements, but they can be a quite complicated perl script if required.
I need to learn perl, but will do a lot better around other people,
most renames won't need much perl, just regular expression search & replace.
It will not be just for renames, it is a very potent language for what it does.
$ rename --version /usr/bin/rename using File::Rename version 0.20
or check 'man rename' - if it mentions perl, it's good.
That reported perl, but the --version option is not supported on the rename on this install.
that sounds like the default rename included in the perl package. it should work but has some problems that are fixed in later versions.
the rename package is only 12 KB in size, so won't use much bandwidth to download.
it has no dependencies other than perl, either so I could mail it to you if you want. or download direct from your nearest debian mirror without bothering with 'apt-get' (updating the package lists will be tens of megabytes). install with 'dpkg -i' (as root, of course).
I tend to stick with the repositories, for a variety of reasons. This is part of why I want to be involved with a group of people, putting heads together, that I can better learn and brush up command line and administrative tasks.
Package: rename Version: 0.20-4 Installed-Size: 36 Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org> Architecture: all Replaces: libfile-rename-perl Provides: libfile-rename-perl Depends: perl Conflicts: libfile-rename-perl Description-en: Perl extension for renaming multiple files This package provides both a perl interface for renaming files (File::Rename) and a command line tool 'rename' which is intended to replace the version currently supplied by the perl package. Description-md5: f25bdadb8b97cbf70a4a78c50ca2e8af Homepage: https://metacpan.org/release/File-Rename Section: perl Priority: optional Filename: pool/main/r/rename/rename_0.20-4_all.deb Size: 12464 MD5sum: 11987300e5cbab887e2b34692665dc3a SHA256: 51ed56802ac8f84b588cc9db117469071e7b434cf8544aab2ef1d66c6686a00f
but in the meantime, try something like this to start with:
# DD MM YYYY (nnn) rename -n 's/(\d\d)(\d\d)(\d{4})\./$3-$2-$1(000)./; s/(\d\d)(\d\d)(\d{4})(\(\d{3}\))\./$3-$2-$1$4./; ' *.jpg
the first s/// statement matches and replaces filenames WITHOUT the 3-digit sequence (and adds a sequence of "(000)"). The second matches filenames WITH them.
I think I can start to follow what you are doing, and I need to be careful, In typing emails and the like, I am hitting extra keys
the s/// statements above should work with the filenames you listed.
and copy-and-paste the rename command into a terminal should also work, no need for error-prone typing. that's part of the reason why I used the '-n' option, so it only does a dry-run and doesn't actually rename anything.
I did copy and paste, but a few extra characters from somewhere, so posted into gedit, turned into a single line by deleting whitespace with whatever did not show, and it worked a treat. Many thanks. The next paragraph I should have remembered, but as said, the years are adding up, with experience and the other less desirable effects.
or paste it into a text file, insert a first line of '#!/bin/sh', and make it executable with 'chmod +x'. and change *.jpg to "$@" so you can specify the filenames on the command line. like so:
#!/bin/bash
rename -n 's/(\d\d)(\d\d)(\d{4})\./$3-$2-$1(000)./; s/(\d\d)(\d\d)(\d{4})(\(\d{3}\))\./$3-$2-$1$4./; ' "$@"
get rid of the '-n' when you've tested it and seen that it will work as required.
craig
-- craig sanders <cas@taz.net.au>
Regards, Mark Trickett