Renaming muliple files at once

I have a bunch of wav files I converted to mp3 files using ffmpeg.

Now the mp3 files are all named file.wav.mp3.

How can I remove the .wav suffix while keeping the rest of the file name? I would like to do this on a whole directory at once.


Solution 1:

With a shell loop, removing the shortest "double dot suffix"

for f in *.wav.mp3; do echo mv "$f" "${f%.*.*}.mp3"; done

or (my personal favorite for things like this) with mmv from package mmv

mmv -n '*.wav.mp3' '#1.mp3'

Remove the echo or the -n as appropriate once you are happy that they are doing the right thing.

Solution 2:

Read man rename and do something like:

rename 's/.wav.mp3/.mp3/' *.wav.mp3

You may have to sudo apt install rename, first.

Solution 3:

In the file browser in Ubuntu, you can select multiple files and rename them according to a pattern by just hitting F2 or right-clicking and selecting Rename.

Here I am replacing x with _by_. In your case you can replace .wav with an empty string.

rename multiple files in Ubuntu

Solution 4:

As you can see there are multiple ways to achieve this. Another way using the basename command is shown below:

for file in ./*.wav.mp3
do
    mv "$file" "$(basename "$file" .wav.mp3)".mp3 
done