Renaming multiple files at once with a pattern on Ubuntu

17,001

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' *
Share:
17,001

Related videos on Youtube

Xseba360
Author by

Xseba360

Updated on September 18, 2022

Comments

  • Xseba360
    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
    pabouk - Ukraine stay strong over 10 years
    To be sure that the regexp matches from the beginning I would rather put ^ to the beginning. Also OP wanted to retain the underscore. The g 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
    noggerl over 10 years
    adding the g is just a standard habit from me and i agree that it's not needed in this case.
  • Tim Truston
    Tim Truston over 9 years
    Does this work for a list of folders too or what do you add to make it?