Renaming multiple files at once with a pattern on Ubuntu
Solution 1
You can do this with the rename
command line utility. To do what you want you need a simple regular expression:
rename "s/.+_/ds/g"
files
.+
represents everything up to (in this context) the last underscore (_
) character (so this works with multiple underscores, as mentioned in your first example). This requires that there be at least one character before the underscore; if you might have file names like _20131012.zip
, use .*
instead. So this three-character string (.+_
or .*_
) will match everything up to and including the last underscore in the filename. s/old/new/
means substitute the new string (ds
) for the old string. The g
means global and might not be necessary in this case.
Solution 2
or, using the cross-platform renamer:
$ renamer --regex --find '.+_' --replace 'ds' *
Related videos on Youtube
Xseba360
Updated on September 18, 2022Comments
-
Xseba360 over 1 year
I have around 300 files named
some_name_123456789.zip another-name2_987654321.zip something(1)_123454321.zip [2]something_987656789.zip
I need to rename them all to
ds_123456789.zip ds_987654321.zip ds_123454321.zip ds_987656789.zip
How can i do this?
-
pabouk - Ukraine stay strong over 10 yearsTo be sure that the regexp matches from the beginning I would rather put
^
to the beginning. Also OP wanted to retain the underscore. Theg
option at the end is not really needed here - it would match multiple instances in the file name if possible. So I think this command would perform better:rename "s/^.+_/ds_/" files
-
noggerl over 10 yearsadding the
g
is just a standard habit from me and i agree that it's not needed in this case. -
Tim Truston over 9 yearsDoes this work for a list of folders too or what do you add to make it?