Rename files

Login or Register for Dates, Times and to Reply

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Rename files
# 1  
Rename files


I am new to Unix and i have a requirement where i need to write a shell script where i have to loop through various files present in a directory and rename them based on below criteria.

Files in the folder are in the following format. [S*_V[0-9]_YYYYMMDD.dat]



we need to remove date part from the file names and final result should be the one like below.


Can you please help me in achieving that.

# 2  
Assuming you are in that folder and it only contains files which should be renamed, you could try something like following directly from the shell.
Of course you could write this in your shell script, in this case be sure that you have a proper shebang in the first line, eg #!/bin/sh
for i in *.dat; do
j=$(echo $i | sed 's/_[0-9]\{8\}//')
mv $i $j

I strongly recommend to copy your original files in a temporary directory, before you run the for loop from above, just for the case that you are not satisfied with it's output.
The sed command simply cuts an underline followed by 9 digits.

Last edited by pseudocoder; 05-30-2010 at 01:51 AM..
# 3  
Originally Posted by thegeek
you can use the rename command: How To Rename Multiple Files Together in Linux Using 3 Methods (link removed)

I checked that link and I wonder how that approach in concrete terms would look like Smilie
# 4  
another way (checking for 2 underlines to avoid renaming renamed files)
for F in *_*_*.dat
do mv -v $F ${F%_*}.dat

# 5  
Originally Posted by frans
another way (checking for 2 underlines to avoid renaming renamed files)
for F in *_*_*.dat
do mv -v $F ${F%_*}.dat

There is no need to worry about renamed files in the for list; the sh expands the glob to generate the list before the loop body begins to execute. Still, a nice, simple, efficient solution, using parameter expansion to generate the new name.

# 6  
Originally Posted by alister
There is no need to worry about renamed files in the for list.
It was just in case of calling the script twice (what happened to me while testing Smilie)
# 7  
Ah. heheh. Apologies for my misunderstandig. Smilie
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #622
Difficulty: Medium
In Python, you cannot have an else clause for the while loop.
True or False?

10 More Discussions You Might Find Interesting

1. 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

2. Shell Programming and Scripting

Rename files

I am getting some files with this mask: aaaa_SP_bbb.txt aaaa_FX_bbbb.txt aaaabbbb.txt I want to rename the files containing: _SP_ -> Rename - >> fileSP.TXT _FX_ -> Rename - >> fileFX.txt and other file that does not contain these words rename them: filenamexx.txt as I... (4 Replies)
Discussion started by: Jomeaide
4 Replies

3. Shell Programming and Scripting

Script to unzip files and Rename the Output-files

Hi all, I have a many folders with zipped files in them. The zipped files are txt files from different folders. The txt files have the same names. If i try to find . -type f -name "*.zip" -exec cp -R {} /myhome/ZIP \; it fails since the ZIP files from different folders have the same names and... (2 Replies)
Discussion started by: pmkenya
2 Replies

4. UNIX for Dummies Questions & Answers

Rename several files

Hi, I would like to rename several files, for example: MSIRP_CatastropheLog_Data_Extract_-_TCAPMI_SMB_20111116_040028.txt MSIRP_CatastropheLog_Data_Extract_-_TCAPMI_SMB_20111117_040023.txt MSIRP_CatastropheLog_Data_Extract_-_TCAPMI_SMB_20111118_040039.txt... (3 Replies)
Discussion started by: wsoethe
3 Replies

5. UNIX for Dummies Questions & Answers

Rename Files

Hi all, I am newbie and Im trying to rename a set of files & there are over 2900 of them. So, the best way I thought was through a script and here is what I got & it doesnt work. Im not sure as how to figure this out. Thanks Gonzalez Here is what I have - -a:~/Users/GonzaPue/ls -altr... (3 Replies)
Discussion started by: PG3
3 Replies

6. UNIX for Dummies Questions & Answers

Rename all .sh files to .pl

I have various .sh and .pl files in one directory. I want to rename all the .sh files to .pl i.e --> I am trying to use mv *.sh *.pl It doesnt work though!! (3 Replies)
Discussion started by: chrisjones
3 Replies

7. Shell Programming and Scripting

rename files Ax based on strings found in files Bx

Hi, I'm not very experienced in shell scripting and that's probably why I came across the following problem: I do have several hundred pairs of text files (PF00x.spl and PF00x.shd) where the first file (PF00x.spl) needs to be renamed according a string that is included in the second file... (12 Replies)
Discussion started by: inCH
12 Replies

8. Shell Programming and Scripting

Rename files

Hi, I wanna rename bunch of files which has ":" to -. ie. rename file named file1:file1 to file1-file1. any ideas? (2 Replies)
Discussion started by: linuxaddict7
2 Replies

9. UNIX for Dummies Questions & Answers

rename files help

Hi, I've already search for this issue but I found different scripts for rename files, but I don't know how to customize it for my needs. Here's what I want to do: I have a lot of files inside many directories, like this: /aa/01.txt /aa/02.txt /ab/01.txt /ab/02.txt I want all those files... (2 Replies)
Discussion started by: piltrafa
2 Replies

10. Shell Programming and Scripting

rename files

hey all, I have files in the format of ABCD20061101 and ABCDEF20061101 in one directory, I would like to change all ABCD20061101 to ABCDEF20061101 and the problem is if I do a simple pattern match of ABCD, then those ABCDEF20061101 would also... (2 Replies)
Discussion started by: mpang_
2 Replies

Featured Tech Videos