Using Perl to Rename File


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using Perl to Rename File
# 1  
Old 09-03-2009
Using Perl to Rename File

Hi,

Can someone help me with a perl file to rename some files please? I can do it with regular command line using the below code, but I need to include this in another script and the other script is perl. I know nothing of perl.

Code:
for file in C*
do
     newfilename=`echo $file | cut -c8-21-`
     mv $file $newfilename
done

# 2  
Old 09-03-2009
Code:
perl -e 'foreach (@ARGV) { rename($_, substr($_,7,14)) }' C*

# 3  
Old 09-04-2009
Quote:
Originally Posted by Vi-Curious
Code:
perl -e 'foreach (@ARGV) { rename($_, substr($_,7,14)) }' C*

Here's what I'm trying to do:

rename files like this:
ABCDEFG20090904024156.00565.txt
to this:
ABCDEFG.00565.txt

Like I said, I know nothing of perl. Will you code do this? Oh and the first 7 characters (ABCDEFG) are never the same.
# 4  
Old 09-04-2009
Code:
foreach (<*.txt>)
{
rename($_, substr($_,0,7) . substr($_,21));
}

If you're doing this in an existing script I'm assuming you'll need to glob the files (angle braces in the code) rather than using @ARGV.

The second substr can also be expressed as a negative offset (substr($_,-10)), which would allow a variable center part - if say you happen to run into a 'ABCDEFG20090904024156a.00565.txt'.
# 5  
Old 09-07-2009
Hi, thanks for the above code. It did work. However, now I need to add a series of letters to renamed files.

So I need to change the file from: ABCDEFG20090904024156.00565.txt
To: ABCDEFGZZZZZ00565.txt

Can I just add these letters to a spot on your code to get it to work? take out the "." and add ZZZZZ in it's place.

---------- Post updated at 10:18 AM ---------- Previous update was at 09:25 AM ----------

I think I got it:

Code:
foreach (<*.txt>)
{
rename($_, substr($_,0,7) . ($_,ZZZZZ) . substr($_,22));
}



---------- Post updated at 11:20 AM ---------- Previous update was at 10:18 AM ----------

Just one more thing Smilie

Need to drop the .txt extension.

Smilie
# 6  
Old 09-07-2009
drop the .txt simply with one more substr.,
Code:
foreach (<*.txt>)
{
rename($_, substr($_,0,7) . ($_,ZZZZZ) . substr($_,22,5));
}

# 7  
Old 09-07-2009
Cool. That worked. I need to learn some of this perl stuff. Coming in handy these days. Those "Teach Yourself Perl in 24hrs" books any good?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash to copy file 3 times and rename based on another file

In the below bash I am trying to copy the only text file (always only one) in /home/cmccabe/Desktop/list/QC/metrics.txt and rename each of the 3 text files according to /home/cmccabe/Desktop/test/list.txt using lines 3, 4 ,5. This format (that is list.txt) is always 5 lines. Thank you :). ... (12 Replies)
Discussion started by: cmccabe
12 Replies

2. Shell Programming and Scripting

Rename specific file extension in directory with match to another file in bash

I have a specific set (all ending with .bam) of downloaded files in a directory /home/cmccabe/Desktop/NGS/API/2-15-2016. What I am trying to do is use a match to $2 in name to rename the downloaded files. To make things a more involved the date of the folder is unique and in the header of name... (1 Reply)
Discussion started by: cmccabe
1 Replies

3. UNIX for Dummies Questions & Answers

awk - Rename output file, after processing, same as input file

I have one input file ABC.txt and one output DEF.txt. After the ABC is processed and created output, I want to rename ABC.txt to ABC.orig and DEF to ABC.txt. Currently when I am doing this, it does not process the input file as it cannot read and write to the same file. How can I achieve this? ... (12 Replies)
Discussion started by: High-T
12 Replies

4. UNIX for Dummies Questions & Answers

look for specific values in a file and rename file with value found

Hi, i have a file with some data ..look for some specific value in the file and if found that value rename the file with the value found in the file.. ex.. File.txt 1236 43715825601ANDERSSON, 1236 437158256031963040120060901200609010000000 1236 43715825604123 MCCL AVE UPPER 1236 ... (11 Replies)
Discussion started by: dssyadav
11 Replies

5. HP-UX

[Solved] Unable to rename file in ftp server .Net:FTP perl

Hello All, I am trying to connect to ftp server and get the files. Also i need to rename the file in other ftp dir. rename method is not allowing me to rename the file in other dir. When i tried copy command by using net::FTP:FILE then perl says it is not installed. Can some body help me to... (2 Replies)
Discussion started by: krsnadasa
2 Replies

6. Shell Programming and Scripting

Perl script to rename file,error

#!/usr/bin/perl $FL="ch.txt"; $CFL="mytext.txt"; print "This script will rename textfiles."; mv $FL $CFL; print "Done."; perl file.pl Error: Can't locate object method "mv" via package "ch.txt" (perhaps you forgot to load "ch.txt"?) at file.pl line 7. (5 Replies)
Discussion started by: cola
5 Replies

7. UNIX for Dummies Questions & Answers

Rename file based on first 3 characters of data in file

I'm looking to determine if I can use a grep command to read file and rename the file based on the first 3 characters of the data in the file. An example is: Read FileA If the first 3 positions of the data in the file are "ITP", then rename the file as FileA_ITP, else if the first 3... (3 Replies)
Discussion started by: jchappel
3 Replies

8. Shell Programming and Scripting

perl rename failed

i have a file, which i want to rename, from my current directory to a backupdirectory. My perl code is below rename($s_filename,$backup.$s_filename ) all my variables are defined. but the rename failed. the file permission my file is "-rw-rw-r--". could this be a problem? I tried to use the... (9 Replies)
Discussion started by: new2ss
9 Replies

9. Shell Programming and Scripting

rename does not work in perl

#!/usr/bin/perl -w use POSIX qw(strftime); $PID = strftime "%Y%m%d%H%M%S", localtime; $filename = "original.list"; rename($filename,$filename.$PID)|| print "rename failed\n"; print $filename;The above code has no syntax error. But the renaming does not work. Anybody got a clue? (1 Reply)
Discussion started by: new2ss
1 Replies

10. UNIX for Dummies Questions & Answers

Help with multiple file rename - change case of part of file name

Hi there, I hope someone can help me with this problem : I have a directory (/var/www/file/imgprofil) which contains about 10000 JPG files. They have a naming convention thus : prefix-date-key-suffix.jpg they all have the prefix p-20050608- then AAAA is a 4 letter code the suffix is... (7 Replies)
Discussion started by: steve7
7 Replies
Login or Register to Ask a Question