Renaming Files (Multiple files)


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Renaming Files (Multiple files)
# 1  
Old 01-02-2009
Renaming Files (Multiple files)

Hi,

I have a directory with files names like ABC20090101AXY.txt, ABC20090102BZ.txt,ABC20090101COF.txt etc. The digits in the filenames represent the date. I want to rename the files to AXY.txt, BZ.txt and COF.txt

I tried with this code.

myfile= date '+ABC%Y%m%d'
for i in *.txt
do
mv $i `echo $i | sed 's/$myfile//'`
done

But its giving message

mv: ABC20090101AXY.txt and ABC20090101AXY.txt are identical

Can u help me finding the problem.

Regards,
Shekhar
# 2  
Old 01-02-2009
If you have Perl installed, this may help you:

for x in *.txt;do mv $x `echo $x | perl -pe 's/^\w+\d+(.*)/$1/'`;done

Hope this helps.
# 3  
Old 01-02-2009
Hi,

shell variables inside '' are not expanded. So here

Code:
mv $i `echo $i | sed 's/$myfile//'`

$myfile will not be substituted by "date '+ABC%Y%m%d'".

Either use "..." or no sed at all. Shell built-ins are enough. Try:
Code:
mv $i ${i/200[7-9][0-1][0-9][0-3][0-9]/}

HTH Chris
# 4  
Old 01-03-2009
Try this
myfile=$(date '+ABC%Y%m%d')
for i in *.txt
do
mv $i `echo $i | sed "s/$myfile//"`
done

i thik u didnt use back tics or $() to set variable myfile.
to expend $myfile use " instead of '

i tried this
a=$(date '+ABC%Y%m%d')

echo ABC20090103AXY.txt | sed 's/$a//g'
ABC20090103AXY.txt

echo ABC20090103AXY.txt | sed "s/$a//g"
AXY.txt

echo '$aABC20090103AXY.txt' | sed "s/$a//g"
$aAXY.txt

echo '$aABC20090103AXY.txt' | sed 's/$a//g'
ABC20090103AXY.txt
# 5  
Old 01-05-2009
Quote:
Originally Posted by shekhar_v4
Hi,

I have a directory with files names like ABC20090101AXY.txt, ABC20090102BZ.txt,ABC20090101COF.txt etc. The digits in the filenames represent the date. I want to rename the files to AXY.txt, BZ.txt and COF.txt

I tried with this code.

myfile= date '+ABC%Y%m%d'
for i in *.txt
do
mv $i `echo $i | sed 's/$myfile//'`
done

But its giving message

mv: ABC20090101AXY.txt and ABC20090101AXY.txt are identical

Can u help me finding the problem.

Regards,
Shekhar
if you have Python and can use it, here's a ready script you can use. Usage examples
Code:
# ls -1
ABC20090101AXY.txt
ABC20090101COF.txt
ABC20090102BZ.txt

# filerenamer.py -p "ABC\d+" -e "" -l "ABC*.txt"
==>>>>  [ /home/ABC20090101COF.txt ]==>[ /home/COF.txt ]
==>>>>  [ /home/ABC20090101AXY.txt ]==>[ /home/AXY.txt ]
==>>>>  [ /home/ABC20090102BZ.txt ]==>[ /home/BZ.txt ]

remove "-l" to do actual rename.
# 6  
Old 01-05-2009
Assuming the "ABC20090102" string is fixed length.
And I'm using sh shell.

Code:
ls -1 *.txt | awk '{print "mv", $1, substr($1,12) }' | sh


Last edited by freizl; 01-05-2009 at 04:55 AM..
# 7  
Old 01-05-2009
Quote:
Originally Posted by freizl
Assuming the "ABC20090102" string is fixed length.
And I'm using sh shell.

Code:
ls -1 *.txt | awk '{print "mv", $1, substr($1,12) }' | sh

it is also not necessary to use ls and sh , by making use of FILENAME variable
Code:
awk '{ system("mv " FILENAME" " substr(FILENAME,1,12) )}' ABC*.txt

not tested.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Renaming multiple files in sftp server in a get files script

Hi, In sftp script to get files, I have to rename all the files which I am picking. Rename command does not work here. Is there any way to do this? I am using #!/bin/ksh For eg: sftp user@host <<EOF cd /path get *.txt rename *.txt *.txt.done ... (7 Replies)
Discussion started by: jhilmil
7 Replies

2. Shell Programming and Scripting

Renaming multiple files

I have 34 file in a directory that all have different names, however, they do have 1 pattern in commmon. They all have "-10-11-2010" date format in the name. I want to replace the date in the file name with a supplied date or maybe even the system date. I am sure I will be using awk or sed to... (9 Replies)
Discussion started by: Harleyrci
9 Replies

3. UNIX for Dummies Questions & Answers

Renaming multiple files

Hi, Can we rename multiples files using find or awk utility? Now I am doing it using for loop and getting the file name and in side the loop using the mv command. Like ine need t rename all txt files to doc file. For example a1.txt => a1.doc a2.txt => a2.doc a3.txt => a3.doc myfile.txt... (2 Replies)
Discussion started by: siba.s.nayak
2 Replies

4. UNIX for Dummies Questions & Answers

Renaming multiple files

I have multiple gif files in a directory with different names. How can i rename them to have this result: file01.gif file02.gif file03.gif . . . file0500.gif Thanks for your help. (3 Replies)
Discussion started by: netx
3 Replies

5. Shell Programming and Scripting

renaming multiple files

I have to rename 100+ files at a time on the server & was trying to use a script for doing that. I have used ultra edit to create a file having current filename & new file name as below file234.txt | file956.txt file687.txt | file385.txt There is no fixed pattern while renaming & would... (20 Replies)
Discussion started by: crux123
20 Replies

6. Shell Programming and Scripting

Renaming multiple files

Hi, I have several hundred files I need to rename, and I'm would rather not hit F2 for each file individually to rename them. Example of file: large1961.jpg What I need the file to be renamed as: 1961.jpg I don't know what type of command I can execute within a shell script that would... (7 Replies)
Discussion started by: jayell
7 Replies

7. Shell Programming and Scripting

Renaming multiple files

I have a bunch of files txt1.csv--2008 thru to txt3.csv--2008. If i wanted to rename these files all at the same time to txt*.csv-2008 what would be the best way to do it... Just need to get rid of the extra - in each file name.. not all files are going to be called txt*.csv--2008. Just... (6 Replies)
Discussion started by: Jazmania
6 Replies

8. Shell Programming and Scripting

Renaming multiple files

hi, I've a machine running RHEL3,kernel version 2.4. i need to rename multiple files under one directory as follows: ls demo.c demo.S demo-1243.sw demo.xyz and now i need to replace the occurrence of demo with demo_1 for each of the above file. the tedious way is to go ahead and do mv on... (2 Replies)
Discussion started by: amit4g
2 Replies

9. UNIX for Dummies Questions & Answers

Renaming multiple files

Help! I was trying to rename multiple files. Like in DOS, i decided to use wildcards and now i am missing some files. Any ideas on how to recover them? Or find out where the files went? I had these 3 files resume1.log elecresume.log compresume.log The command I ran was mv *.log *.log.bak... (6 Replies)
Discussion started by: rmayur
6 Replies

10. UNIX for Dummies Questions & Answers

renaming multiple files

Hi to everyone!!. Here's my stupid question of the day. When I have to rename a file I use "mv filename newfilename". But what about renaming multiple files, for example if I want to add the prefix "old" to several image files (in fact it's what I wanted to do..). Thanks in advance.... :D (6 Replies)
Discussion started by: piltrafa
6 Replies
Login or Register to Ask a Question