I have a folder with multiple files in it, and I want to append .mp3 extension at end of each file. is there any way to rename all these files with one command.?
-
2Do the files already have an extenson?– Carl HCommented Mar 31, 2015 at 10:45
-
@carl no file doesn't have any extension.– piyushmandovraCommented Mar 31, 2015 at 10:53
-
ya dude but i don't have much experience with command line– piyushmandovraCommented Mar 31, 2015 at 11:09
-
1?? Your question is asking for a command line solution.– Jacob VlijmCommented Mar 31, 2015 at 11:11
-
1@JacobVlijm yes, but I post above comment because they say that my question is duplicate of some question.– piyushmandovraCommented Mar 31, 2015 at 11:15
3 Answers
Assuming the files don't already have any extension at all, then run this from the directory containing the files :-
for file in * ; do mv "$file" "$file".mp3; done
If you want to be extra safe, do this instead :-
for file in * ; do cp "$file" "$file".mp3; done
This will make copies of the files and add .mp3, instead of renaming them. You can always delete the originals afterwards.
Or if you want a graphical interface for mass renaming of files, then have a look at PyRenamer in the Software Centre.
-
is there any way to just rename instead of creating duplicates.? and out of curiosity is it shell scripting... ? Commented Mar 31, 2015 at 10:56
-
1@piyushmandovra Yes, that's what the first part of my answer does -
for file in * ; do mv "$file" "$file".mp3; done
will rename every file to file.mp3.– Carl HCommented Mar 31, 2015 at 10:59
and I want to append .mp3 extension at end of each file
short command
for f in *; do mv "$f" "$f.mp3"; done
-
1
Use the command rename. It allows perl regexpes. E.g.,
rename 's/(.*)/$1.mp3/' *
Will add ".mp3" to the end of any file or directory name in the directory.
-
1Is capturing and backsubstitution really necessary here? what about just
s/$/.mp3/
? Commented Mar 31, 2015 at 11:23