Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: I have a folder which is having 1200 files,all the file names are have maximum of 8 character length.I need to remove last character from each of the filnames and prefix it with character "A"

by MidLifeXis (Monsignor)
on Feb 20, 2013 at 18:38 UTC ( #1019822=note: print w/replies, xml ) Need Help??


in reply to I have a folder which is having 1200 files,all the file names are have maximum of 8 character length.I need to remove last character from each of the filnames and prefix it with character "A"

See rename, split, join, length, and substr for some ideas. You may also want to see -e to check if a file or directory exists. Before using rename, you will likely want to do a test run with just printing.

--MidLifeXis

  • Comment on Re: I have a folder which is having 1200 files,all the file names are have maximum of 8 character length.I need to remove last character from each of the filnames and prefix it with character "A"

Replies are listed 'Best First'.
Re^2: I have a folder which is having 1200 files,all the file names are have maximum of 8 character length.I need to remove last character from each of the filnames and prefix it with character "A"
by perladdict (Chaplain) on Feb 20, 2013 at 20:38 UTC
    Thanks MidLifeXis, As per your inputs i have tried to implement this,Below is the code i tried it,i am able to succeed to rename all tons of files in my directory.
    #!/usr/bin/perl $dir = "C:\\Users\\user\\Desktop\\test"; opendir DIR, $dir or die "error: cannot open directory \"$dir\" $!"; @files = sort grep (!/^\.$|^\.\.$/, readdir(DIR)); closedir (DIR); foreach $fl(@files) { if($fl =~ m/\.doc/) { @a = split(/\.doc/,$fl); foreach $len(@a) { $z = length $len; if($len <= $z) { @x = substr($len,0,7); foreach $mod(@x) { $mod = "A".$mod.".doc"; rename $fl,$mod; } } } } }

      Grep pattern used for getting files can be modified to reduce the for loop iteration as you're going to rename only file names which are less than or equal to 8 characters with .doc extension.

      @files = sort grep /^.{1,8}\.doc$/, readdir(DIR);

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1019822]
help
Chatterbox?
[shmem]: wait, what? you want that person to read the documentation for you?
[Lady_Aleena]: I might have to go with options instead of a straight list.
[Discipulus]: if more than 3 go for named variables LA
[Lady_Aleena]: Discipulus, it is at 2 now, but with what I am thinking about, it could go to 3. However, only 1 is needed. The second and third are optional.
[shmem]: straight list or named parameters - that depends on whether (and how many) optional arguments you have
[Discipulus]: if so a plain list is ok, imho
[Lady_Aleena]: shmem, I already have the plugin installed, just not active.
[shmem]: if you have 1 optional argument, place that at the end of the list. If you have more, go for named parameters.
[Lady_Aleena]: 1 manditory, 2 optional.
[Discipulus]: my ($need,$opta,$optb ) = @_; .. if $opta..

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (12)
As of 2017-04-27 12:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I'm a fool:











    Results (506 votes). Check out past polls.