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 |
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. |
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 |
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 |
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 |
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 Code:
mv 1 1.old Code:
move_script > output |
Quote:
|
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 ;) |
All times are GMT -5. The time now is 08:45 PM. |