Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game. |
| Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
 |
GNU/Linux Basic Guide
This 255-page guide will provide you with the keys to understand the philosophy of free software, teach you how to use and handle it, and give you the tools required to move easily in the world of GNU/Linux. Many users and administrators will be taking their first steps with this GNU/Linux Basic guide and it will show you how to approach and solve the problems you encounter.
Click Here to receive this Complete Guide absolutely free. |
|
 |
01-21-2008, 11:05 PM
|
#1
|
|
LQ Newbie
Registered: May 2007
Distribution: Suse 10 and 11
Posts: 25
Rep:
|
To rename files in a directory should I use Bash script or a Perl Script ?
I am using Suse 10.2 on a HP Compaq NX6325 Notebook with 2gigs of ram. I have a USB Ext. drive 500G. with over 1,000 files that have to be renamed in succeeding order of numbers meaning 1,2,3,4, with a date (Date that the file was renamed).
My question is should I create a Perl script or a Bash Script to rename the files and should I rename them in blocks of 200 and move the renamed files to another directory?
The catch is I will have to use the system in question to do my day to day work like email creating docs and surfing the web.
So the script once running can not be taxing on the system and has to be very fast since the files in question has to be renamed with in a 3 day period.
I know this may start a Flame war.
Thank you for you help and advise in advance
Last edited by jamtech; 01-21-2008 at 11:19 PM.
|
|
|
|
01-21-2008, 11:08 PM
|
#2
|
|
Guru
Registered: Aug 2004
Location: Brisbane
Distribution: Centos 6.4, Centos 5.9
Posts: 15,261
|
Not quite sure what you mean by 'renamed in succeeding order of numbers meaning 1,2,3,4', but Perl is faster (compiled rather than interpreted) and it's better if the selection/matching criteria gets complicated.
Otherwise, use bash ... your choice.
|
|
|
|
01-21-2008, 11:24 PM
|
#3
|
|
LQ Newbie
Registered: May 2007
Distribution: Suse 10 and 11
Posts: 25
Original Poster
Rep:
|
chrism01,
I should clarify my question I need to have the files renamed in sequence with a date added to the file as part or the rename process
|
|
|
|
01-21-2008, 11:37 PM
|
#4
|
|
Guru
Registered: Aug 2004
Location: Brisbane
Distribution: Centos 6.4, Centos 5.9
Posts: 15,261
|
Either lang should do want you want within the time limit.
Note that the mv cmd enables you to rename at the same same eg
mv afile.dat bfile.dat
iirc, this (mv) can only be used between dirs on the same (physical) disk partition, otherwise you have to copy (cp), then delete (rm) the original version.
There's no need to use blocks of 200, just do them one at a time as you go eg (pseudo-code)
Code:
for file in list
do
newfile = create newfilename
mv file newfilename
done
|
|
|
|
01-22-2008, 05:21 AM
|
#5
|
|
Senior Member
Registered: Oct 2003
Location: Bonaire
Distribution: Debian Lenny/Squeeze/Wheezy/Sid
Posts: 3,832
|
Renaming 1000 files will not put any stress on your system. If you are only renaming them, they are, well, renamed and not copies, no large data transfer involved. I routinely rename batches of 100 files on my system and the slowest is the verbose output to my screen. 5-10 seconds?
jlinkels
|
|
|
|
01-22-2008, 05:35 AM
|
#6
|
|
Senior Member
Registered: Mar 2004
Location: england
Distribution: FreeBSD, Debian, Mint, Puppy
Posts: 3,211
Rep: 
|
a safety hint,
I usually write a script to echo the command to stdout, then capture and run it
through a shell, so you have a record of what you have done if you need
to reverse it:
Code:
for file in *; do
echo mv $file $file.old
done
so it echoes to stdout like:
Code:
mv 1 1.old
mv 1.c 1.c.old
mv 1.pl 1.pl.old
mv 1.sh 1.sh.old
mv 11 11.old
so do somehting like:
Code:
move_script > output
# check the output file looks okay
sh output
# you have a record of what happened
|
|
|
|
01-22-2008, 07:48 PM
|
#7
|
|
Senior Member
Registered: Nov 2005
Distribution: Debian
Posts: 2,056
|
Quote:
Originally Posted by chrism01
iirc, this (mv) can only be used between dirs on the same (physical) disk partition, otherwise you have to copy (cp), then delete (rm) the original version.
|
This is not true. mv works fine regardless of filesystems. Of course behind the scenes the physical copying will take place if you mv across filesystems, but you don't have to do it manually.
|
|
|
|
01-22-2008, 11:25 PM
|
#8
|
|
Guru
Registered: Aug 2004
Location: Brisbane
Distribution: Centos 6.4, Centos 5.9
Posts: 15,261
|
In the old days that wasn't always true... eg:
info mv
"Prior to version `4.0' of the fileutils, `mv' could move only regular files between file systems."
From perl docs re (Perl) rename cmd
"Behavior of this function varies wildly depending on your system implementation. For example, it will usually not work across file system boundaries, even though the system mv command sometimes compensates for this."
guess i'm getting old 
|
|
|
|
| Thread Tools |
Search this Thread |
|
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -5. The time now is 11:40 AM.
|
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|