Hi, y’all. Running Linux Mint and I have the puzzle presented above.

From what I gather, I’m using rename (1p) which makes mention of Perl and in the man page it says it will also run as file-rename. I’m not sure if this is the right rename utility for the common argument

s/old_pattern/new_pattern/

but any time I try to run anything (including -n), I just get an angle bracket > and have to ctrl-c out.

I’d also need some details on how the wildcards work, which seems to be lacking in the documentation.

Edit: Instructions unclear. I have a bunch of episodes that are very wordy. I’m moving them onto DVD and truncated on my player the directory will look like:

Star Trek The Next Gene…
Star Trek The Next Gene…
Star Trek The Next Gene…
Star Trek The Next Gene…
Star Trek The Next Gene…

so I want to take (sample episode)

Star Trek The Next Generation Season 1 Episode 1 - Encounter at Far Point

and

  • Replace 'Star Trek The Next Generation Season ’ with ‘S0’

  • Replace 'Episode ’ with ‘E0’ or ‘E’ depending on digits

  • Keep episode title as is.

So it looks like

S01E01 - Encounter at Farpoint.mkv

  • HeroCool@nord.pub
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    2 days ago

    If the naming of each series is that consistent, you could just use parameters in bash and build the new title out of it and then do the rename, in a loop. It would be a very short shell script.

    eta: using printf to format the new title variable will let it handle the number formatting clearnly, like 01 for 1

    eta: something like this

    for f in *"Season "*; do s_ep="${f#*Season }"; s="${s_ep%% Episode*}"; ep_t="${s_ep#*Episode }"; ep="${ep_t%% - *}"; t="${ep_t#* - }"; printf -v new "S%02dE%02d - %s" "$s" "$ep" "$t"; mv "$f" "$new"; done