Remove files from a directory using perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Remove files from a directory using perl
# 1  
Old 09-19-2008
Remove files from a directory using perl

Hi all,

I have the following question. Considder that in the directory /code the script remove.pl exists. What i want is to run this script and remove some files that exist in the directory /dir/tmp. I use the below code but it does not work.

system("cd /dir/code");
system("rm FileName");

Best Regards,
Christos
# 2  
Old 09-19-2008
Try:

Code:
system("cd /dir/code; rm FileName");

Each system() call results in a call to a subshell. Once that subshell exits, it "forgets" which directory you told it to cd into, so the subsequent one knows nothing about it.

I'm sure there are built-in perl calls to do these file removals that don't require the invocation of a subshell which would be more efficient.
# 3  
Old 09-19-2008
Code:
unlink "/dir/code/FileName";

The cd is Useless in the system() invocation too, you can obviously use a path name with rm as well.
# 4  
Old 09-19-2008
He wants to unlink from the temp directory, so:

Code:
unlink "/dir/temp/filename"

# 5  
Old 09-19-2008
Here's another way
Code:
$command = /usr/bin/rm;
$dir = /path/to/something;
@files = ("filename1","filename2","filename3");

for $file(@files)
{
   $args = "$command $dir/$file";
   system $args;
}

Or as a subroutine
(this will allow you to send cp/rm/mv as well as changing the path)
Code:
sub doManageFiles($$@)
{
   my $command   = $_[0];
   my $path      = $_[1];
   my $files     = $_[2];

   for (@{$files})
   {
      $args = "$command $path/$_";
      system $args;
   }
}


Of course, as perl is TIMTOWTDI, there are a few perl modules available via cpan that do file manipluation, such that you don't need to call an external "rm".
# 6  
Old 09-19-2008
You don't need anything for simple deletes, just use unlink() for files and rmdir() for directories. Shelling out to delete files is a big waste. If you needed to zap an entire directory tree easily you could use File::Path.
# 7  
Old 09-19-2008
Thanks for the tip, Kevin. I've used rmdir before, but I've not had a need for unlink...

The subroutine that I provided for my example was originally used for running some binaries against a handful of files - seemed easy enough to adapt for this.

I think that you've saved me a line or 5 going forward... Smilie

Cheers,

- Avron
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Script to remove zip files from a directory

Hi Folks, There is a job which generates a .zip files every day at /usr/app/generated directory , now please advise for the script that will delete this zip files permanently.but while deleting it should make sure that it will not delete the last two days recently generated zip files and this... (1 Reply)
Discussion started by: punpun66
1 Replies

2. Shell Programming and Scripting

remove a whole directory tree WITH files inside?

Assume I want to remove a whole directory tree beginning with /foo/bar/ The directory or sub-directories may contain files. The top directory /foo/bar/ itself should not be deleted. rm -f- r /foo/bar does not work because it requires a directory tree without files. How does it work... (3 Replies)
Discussion started by: pstein
3 Replies

3. Shell Programming and Scripting

Remove two types of files from a directory

Hi All, i need to move two types of files from a directory. I have used the below command to find the files from the directory.. SOURCE_DIR="some directory path" TARGET_DIR="Target Dir" Datestamp=Date_format find $SOURCE_DIR \( -name "*.log" -o -name "*.out" ) - exec ls -1 {} \; now i... (9 Replies)
Discussion started by: ch33ry
9 Replies

4. Shell Programming and Scripting

Remove duplicate files in same directory

Hi all. Am doing continuous backup of mailboxes using rsync. So whenever a new mail arrives it is automatically copied on backup server. When a new mail arrives it is named as xyz:2, when it is read by the email client an S is appended xyz:2,S Eventually , 2 copies of the same file exist on... (7 Replies)
Discussion started by: coolatt
7 Replies

5. UNIX for Dummies Questions & Answers

remove files from a directory

I have some empty files that were created from a script I ran that I cannot delete using the rm command.... any ideas as how I can delete them? -rw-r--r-- 1 schroeks x_exp 0 Jul 21 08:24 rrd15CEC -rw-r--r-- 1 schroeks x_exp 0 Jul 21 11:37 rrd15CEC -rw-r--r-- ... (20 Replies)
Discussion started by: freddie88
20 Replies

6. UNIX for Dummies Questions & Answers

How to remove directory with subdirectories and files?

I'm trying to remove several directories which contains sun-dirs and files inside. I used the command rm -r <dirname> But, it always ask "examine file in directory <dirname> yes/no?" line by line. So, i need to write "y" for every line. How can i skip this step and remove all directories with... (9 Replies)
Discussion started by: ppa108
9 Replies

7. UNIX for Advanced & Expert Users

Can't list or remove files from a directory

Hi I have a problem. One of the directories in /var, on one of my servers, has filled up with loads of files. I have tried to list the directory to see what is in it, but the 'ls' command just hangs. Same thing happens when I try to use 'rm' to remove files from that directory. I can see what... (2 Replies)
Discussion started by: m_smith
2 Replies

8. UNIX for Dummies Questions & Answers

remove old files from a directory

Hello I'm new to this forum, so I did a quick scan of the FAQs to see if my problem had been addressed already, since I believe it is probably a very common need. I was surprised that I did not see anything obvious. I need to remove all files from a directory that have a last modified date... (2 Replies)
Discussion started by: 2davidc8
2 Replies

9. Shell Programming and Scripting

remove duplicate files in a directory

Hi ppl. I have to check for duplicate files in a directory . the directory has following files /the/folder /containing/the/file a1.yyyymmddhhmmss a1.yyyyMMddhhmmss b1.yyyymmddhhmmss b2.yyyymmddhhmmss c.yyyymmddhhmmss d.yyyymmddhhmmss d.yyyymmddhhmmss where the date time stamp can be... (1 Reply)
Discussion started by: asinha63
1 Replies

10. HP-UX

Want to remove files from unix directory

Dear All I am basic user of Unix. i woul like to delete some files (basically 05 and 0801111105) from unix directories but unable to delete it I tried all option. rm , rm -f etc.. but not succeed. Infact it also not allowing me to use chmod option so that i can grant 777 option to... (1 Reply)
Discussion started by: yogi_chavan
1 Replies
Login or Register to Ask a Question