Rename Multiple Files


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Rename Multiple Files
# 1  
Old 06-02-2013
Rename Multiple Files

Hey guys, I am the definition of a newbie. I am in the process of trying to rip all my dvds onto a new HTPC I setup. While doing this, I am also trying to organize a bunch of other files I already have to proper naming conventions. So far I have just been naming each file separately (I am on a Windows 7 machine). Somebody told me you can rename multiple files easily using cygwin (which I have installed) and shell scripting. However, I have NO CLUE how to do this. The files are named as so:

[WBDS]Show_Title_-_001_-_Episode_Name_[DR][x264][F26CC67E]
[AJGD]Show_Title_-_002_-_Episode_Name_[DR][x264][CBD6A73C]
and so on...

My goal is to end up with:
s01e01 - Episode Name
s01e02 - Episode Name
etc...

From lots of googling I know I need to follow:
rename oldname newname *.files
However, I have no clue how to set this up properly. Thanks for any help!
# 2  
Old 06-02-2013
One point - consider NOT having spaces in file names. When using cmd.exe or cygwin they can cause problems later on.

This is how it works for what you describe. I put a # in front of the command that renames files. That line is red. Leave it there until you have run through the script, seen the proposed outcomes. Then remove it. In shell # marks the start of a comment - the shell interpreter ignores the stuff after it.

c:/Users/Ralze34/media/mydirectory is a name I made up. Use the correct one. cygwin uses / instead of \ in file names.

this will not work if your files have spaces in the file names
Code:
cd c:/Users/Ralze34/media/mydirectory  # go to where the files are
count=1                                              # start counting at 1
for filename in *                                  # check every file in the directory
do
if  [ -f $filename ] ; then                       # if it a regular file - not a directory
    episode=$(echo "$filename" | awk -F '_'   '{print $6,"_",$7}' )
    newfilename=$(printf "s01e01_%s"  "$episode") # build new file name
    echo "rename $filename to $newfilename"    # show what we did
    # mv $filename $newfilename                  
fi
done


Last edited by jim mcnamara; 06-02-2013 at 09:05 PM..
# 3  
Old 06-02-2013
Quote:
Originally Posted by jim mcnamara
One point - consider NOT having spaces in file names. When using cmd.exe or cygwin they can cause problems later on.

This is how it works for what you describe. I put a # in front of the command that renames files. That line is red. Leave it there until you have run through the script, seen the proposed outcomes. Then remove it. In shell # marks the start of a comment - the shell interpreter ignores the stuff after it.

c:/Users/Ralze34/media/mydirectory is a name I made up. Use the correct one. cygwin uses / instead of \ in file names.

this will not work if your files have spaces in the file names
Code:
cd c:/Users/Ralze34/media/mydirectory  # go to where the files are
count=1                                              # start counting at 1
for filename in *                                  # check every file in the directory
do
if  [ -f $filename ] ; then                       # if it a regular file - not a directory
    episode=$(echo "$filename" awk -F '_'   '{print $6,"_",$7}' )
    newfilename=$(printf "s01e01_%s"  "$episode") # build new file name
    echo "rename $filename to $newfilename"    # show what we did
    # mv $filename $newfilename                  
fi
done

Wow, ok none of that makes sense to me (technically speaking). Thanks for the help though. So I copied what you have and see this printed out:

Code:
rename [WBDS]Show_Title_-_039_-_Episode_Name_[DR][x264][D9373446].mkv to s01e01_[WBDS]Show_Title_-_039_-_Episode_Name_[DR][x264][D9373446].mkv awk -F _ {print $6,"_",$7}

So now I am guessing I need to tweak to handle the correct replacements (again something I am clueless on). It seems I need to replace the s01e01 to like s01e + $count since we set count to 1 at start. Then something to strip out everything except the episode name.
# 4  
Old 06-02-2013
Oh, [expletive deleted]. I did not test my code. My bad.

See my original post. Find the line with awk in it. See the red pipe: |
Add that and your code should be okay.

Caveat. Again - you seem to have a windows-centric file naming world view. Which is fine on Windows. For cygwin: Spaces in file names require other approaches than the one I posted.
# 5  
Old 06-02-2013
Quote:
Originally Posted by jim mcnamara
Oh, [expletive deleted]. I did not test my code. My bad.

See my original post. Find the line with awk in it. See the red pipe: |
Add that and your code should be okay.

Caveat. Again - you seem to have a windows-centric file naming world view. Which is fine on Windows. For cygwin: Spaces in file names require other approaches than the one I posted.
I've only ever worked on Windows machines. I'm definitely willing to expand my horizons though! Looks like that made a big difference (would you mind explaining what each thing is doing a bit more in detail, just trying to learn). Here is the output now:
Code:
rename [WBDS]Show_Title_-_038_-_Episode_Name_[DR][x264][055F2967].mkv to s01e01_Episode_ Name

 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Rename multiple files in one go

OS : Oracle Linux 6.8 shell : bash As shown below, I have multiple files like below (query1-extract_aa, query1-extract_ab, query1-extract_ac, ....) $ ls -l total 235680 -rw-rw-r-- 1 reportusr reportusr 30M May 3 11:25 query1-extract_aa -rw-rw-r-- 1 reportusr reportusr 30M May 3 11:25... (5 Replies)
Discussion started by: kraljic
5 Replies

2. Shell Programming and Scripting

SBATCH trinity for multiple files and rename/move the output files

Hey guys, I have wrote the following script to apply a module named "trinity" on my files. (it takes two input files and spit a trinity.fasta as output) #!/bin/bash -l #SBATCH -p node #SBATCH -A <projectID> #SBATCH -n 16 #SBATCH -t 7-00:00:00 #SBATCH --mem=128GB #SBATCH --mail-type=ALL... (1 Reply)
Discussion started by: @man
1 Replies

3. Shell Programming and Scripting

Rename a multiple files

I have multiple files in folder which i want to rename. hence I am using the below command in my script by I get an error: export XXX_LOG_DIR="${LOG_DIR}/${XXX_HOST}/xxx/${REPORT_DATE}" mv $XXX_LOG_DIR/*.audit.gz $XXX_LOG_DIR/*.audit.log.gz But I get the below error: mv: target... (5 Replies)
Discussion started by: karan8810
5 Replies

4. Shell Programming and Scripting

How to rename multiple files at one go?

Hi, I have hundreds of files with XXX in their file name and I want to rename all of them with YYY in place of XXX. for ex: $ ls -1 123XXX789 345XXX678 Output $ ls -1 123YYY789 345YYY678 I know we can loop in each file and sed to replace and rename each file but ren *XXX* *YYY*... (4 Replies)
Discussion started by: reddyr
4 Replies

5. Shell Programming and Scripting

Rename multiple files

Hi, In my directory I have many files, for e.g. file_123 file_124 file_125 file_126 file_127 Instead of renaming these files one by one, I would like to rename them at a same time using same command... they should appear like 123 124 125 126 127 What command(awk or ls or... (3 Replies)
Discussion started by: juzz4fun
3 Replies

6. Shell Programming and Scripting

Rename multiple files

hello: I have multiple files with names like: somestring_y2010m01d01 somestring_y2010m01d02 .......... somestring_y2010m12d31 How... (4 Replies)
Discussion started by: sylcam
4 Replies

7. UNIX for Dummies Questions & Answers

How to rename multiple files

Hi all, I have some files like: pickup.0000043200.t001.t001.data pickup.0000043200.t001.t002.data pickup.0000043200.t002.t001.data pickup.0000043200.t002.t002.data pickup.0000043200.t003.t001.data pickup.0000043200.t003.t002.data I need to rename these files to ... (4 Replies)
Discussion started by: a_dor8
4 Replies

8. Shell Programming and Scripting

now to rename multiple files

I have several hundred files in one directory which I need to move to another directory with the new extension, for example: /bb/data/rptmgr* are in the source directory need to be moved to /bb/data55/rptmgr*.new Is there an efficient way to do it? Thanks -A (4 Replies)
Discussion started by: aoussenko
4 Replies

9. Shell Programming and Scripting

rename multiple files

Hi, can anyone have a ksh script to rename multiple files (ie to remove .Z extension of the files) can someone correct this? for i in *.Z do var1 = substr($i, 1,at(".Z",$i)-1) mv $i $var1 done Thanks.. Antony (13 Replies)
Discussion started by: antointoronto
13 Replies

10. UNIX for Dummies Questions & Answers

Rename multiple files

Hello, I want to rename multiple files at a time and I don't know how to do it. I have various ".mp3" files, like "band name - music name.mp3" and I want to remove the "band name" from all files. Anybody knows how to do it using shell script or sed or even perl? Thanks (7 Replies)
Discussion started by: luiz_fer10
7 Replies
Login or Register to Ask a Question