3

I've been making simple bash functions for this with find -exec or parsing ls or using bash globbing etc each time I had a big problem and I had to go to a new method one time it was argument list too long another time files that already had a name like 2 was overwritten when another file was being renamed to 2.

One time it was a problem with unicode, one time with space in the file name, one time with * or & in the filename and so on. So I thought I'd come here and ask you people for the most efficient and robust general purpose way to rename all the files in a directory to have sequential names no matter what!. No matter how long the names of the files are and no matter what their original name is or what extension they have and no matter if they have non-ASCII characters in them.

So my requirements are:

  1. That it works with long filenames.
  2. That it works with unicode characters.
  3. That it works if the files have space or special characters in them.
  4. That it does not overwrite any file on another.
  5. That it is as fast as possible:D
Zanna
  • 70,465
  • 2
    Seems like an advertisement to use python :) – Jacob Vlijm Feb 15 '18 at 13:57
  • 1
    You should really provide an example filename set. What do you mean by "sequential names"? does the relationship between the input lexical order and output numerical order matter, and if so what should it be? – steeldriver Feb 15 '18 at 14:06
  • The easiest (and fastest I suppose) would be rename, but as Oli explained it perfectly in the duplicate question I linked I won't add an answer here. – dessert Feb 15 '18 at 14:24

1 Answers1

2

If your Ubuntu isn't a server don't treat it like one. pyRenamer from the default Ubuntu repositories has all the features that you are looking for including regex support, and since it's a GUI program you don't need to break your head trying to figure out how to use it. If you are having trouble writing a regular expression, you can get an explanation of what your regex does at RegExr. Don't allow yourself to become biased against GUI programs that were created for use cases like this.

pyRenamer is available from the default Ubuntu repositories in Ubuntu 16.04 and earlier. In Ubuntu 18.04 and later pyRenamer has been replaced by GPRename.

karel
  • 114,770