Delete files whose file names are listed in a .txt file


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Delete files whose file names are listed in a .txt file
# 1  
Old 01-04-2013
Code Delete files whose file names are listed in a .txt file

hi,

I need a help. I used this command to list all the log files which are for more than 10 days to a text file.

Code:
find /usr/script_test -type f -mtime +10>>/usr/ftprm.txt

I want all these files listed in the ftprm.txt to be ftp in another machine and then rm the files.

Anyone can help me out. am new in scripting.

Thanks

Last edited by Scrutinizer; 01-04-2013 at 03:58 AM.. Reason: code tags
# 2  
Old 01-04-2013
Code:
 
while read filename
do
          #ftp code goes here..
rm ${filename}
done < /usr/ftprm.txt

ftp code (use mput method - instead of mget )
https://www.unix.com/shell-programmin...tp-server.html
# 3  
Old 01-04-2013
Thanks for the reply.

but its not working. am thinking how the ftp will know from which directory to take the files and ftp.

please find code which am using:

Code:
while read filename
do

ftp -i -n << EOF
open 192.168.1.75
user loguser PASSWORD
prompt
cd \logs_finacle
mput *.*
EOF
rm ${filename}
done < /usr/ftprm.txt


Last edited by Scrutinizer; 01-04-2013 at 09:50 AM.. Reason: code tags
# 4  
Old 01-04-2013
kamaldev,

itkamaraj has drawn you the skeleton of a solution. You will need to ftp one file at a time with the loop. If you test that the file has been delivered successfully, then you can remove it on the local server. If you try it how you have it at the moment, you will put every file every time you read a line from you input file, so one file will be put once (no worries there), but two will be put twice (hmmmm) or 10 files will be put ten times EACH. if the files are big then you could be thrashing things about repetitively quite a bit.

Do you really want to only put files with a dot in their name? From unix, an "mput *" is all that is required to state all files, but you are also sending every file with the mput so you may duplicate the FTP later on if you run the job again.

Capture the output from the FTP command and look for the success message in your script. The FTP command may still exit with return code zero (i.e. no error) even if the file fails to be written, because the error is remote and the FTP command itself works. If you schedule this with SFTP, then you would get a non-zero return code to test, but it depends on you having the SFTP client & server tools installed.


Something like this perhaps:-
Code:
while read filename
do
     ftp -i -n << EOF  > ftp_log.txt
        open 192.168.1.75
        user loguser PASSWORD
        prompt
        cd \logs_finacle
        put ${filename}
        EOF

     if [ `grep -c "^226 " ftp_log.txt` -eq 1 ]
     then
         rm ${filename}
     else
         echo "Failed to deliver file ${filename}"
         exit 99
     fi
done < /usr/ftprm.txt

Be careful to ensure that the EOF line is only indented with tab characters. Using a space will mean that the block of text passed to the FTP command will be incomplete and the FTP will fail with a strange message.

You will need to run an FTP manually to check what the success message you should get is. Mine is prefixed with the line starting "226", so that's what I've used. The ^ states that this is the beginning of the line.


I hope that this is helpful. It is a lot to take in at once, so ask if you need some clarification - or should if I've made an error. I would never profess to be perfect!



Robin
Liverpool/Blackburn
UK
# 5  
Old 01-07-2013
Thanks robin.

Its more than my limit. I try to read more on your explanation.
am getting an syntax error on the line 3.

Code:
 
ftp -i -n << EOF > ftp_log.txt
 
error: ./ftprm.sh: 0403-057 Syntax error at line 3 : `<' is not matched.


Last edited by Scott; 01-07-2013 at 11:52 AM.. Reason: Code tags
# 6  
Old 01-07-2013
It is difficult to tell what exactly is the error without seeing your code. By the way I see you are using a while loop to read file-name and opening FTP connection for each file. I suggest using an awk code to get all the file transferred in single connection:-
Code:
awk 'BEGIN {
 print "ftp -i -n << EOF"
 print "open 192.168.1.75"
 print "user loguser PASSWORD"
 print "prompt"
 print "cd \logs_finacle"
} {
 print "put "$0 
}
END {
 print "EOF"
}' /usr/ftprm.txt > ftp_batch

chmod +x ftp_batch

./ftp_batch

This User Gave Thanks to Yoda For This Post:
# 7  
Old 01-07-2013
I think that the line:-
Code:
ftp -i -n << EOF  > ftp_log.txt

...should actually be:-
Code:
ftp -i -n <<-EOF  > ftp_log.txt

See if that helps.

Sorry about that.




Robin
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Delete files except the file names available in the Except File

Hi, I need some help in the below scenario. I need to delete all the files from the directory except the file name available in the Except file. Like the folder ABC have files like A1.txt,A2.txt......A10.txt and also have a file named Except.txt with the content A3.txt,A4.txt Need a... (6 Replies)
Discussion started by: kban
6 Replies

2. UNIX for Dummies Questions & Answers

Delete files in a txt file

Hi, I have very old files in my server like from 2012 and i want to delete them, Please help. Thanks in advance.. (2 Replies)
Discussion started by: nanz143
2 Replies

3. Shell Programming and Scripting

Want to delete the junk files from a directory which are not listed in a TEXT file

Hello Everyone, I want to delete the image files from a directory, which are not listed in a TEXT file. The directory contains large number of image files (in millions) required / not required. I want to delete the image files which are "not required". I have generated a Text file having... (3 Replies)
Discussion started by: Praveen Pandit
3 Replies

4. Shell Programming and Scripting

Delete files listed in text file

Hi Team, Here's the scenario, I have a text file called "file_list.txt". Its content is as follows. 111.tmp 112.tmp 113.tmp 114.tmp These files will present in "workdir" directory. It has many files. But only the files present in file_list.txt has to be deleted from the workdir... (7 Replies)
Discussion started by: kmanivan82
7 Replies

5. Shell Programming and Scripting

Exclude certain file names while selectingData files coming in different names in a file name called

Data files coming in different names in a file name called process.txt. 1. shipments_yyyymmdd.gz 2 Order_yyyymmdd.gz 3. Invoice_yyyymmdd.gz 4. globalorder_yyyymmdd.gz The process needs to discard all the below files and only process two of the 4 file names available ... (1 Reply)
Discussion started by: dsravanam
1 Replies

6. Shell Programming and Scripting

Copy files listed in text file to new directory

I am trying to write a script that will copy all file listed in a text file (100s of file names) to a new directory Assume script will run with main as current working directory and I know how many files/lines will be in List.txt Im trying to work up a test script using this model Contents of... (2 Replies)
Discussion started by: IAmTheGrass
2 Replies

7. Shell Programming and Scripting

Finding consecutive numbers in version names on a txt file

Hi all. I have a directory which contains files that can be versioned. All the files are named according to a pattern like this: TEXTSTRING1-001.EXTENSION TEXTSTRING2-001.EXTENSION TEXTSTRING3-001.EXTENSION ... TEXTSTRINGn-001.EXTENSION If a file is versioned, a file called ... (10 Replies)
Discussion started by: fox1212
10 Replies

8. UNIX for Dummies Questions & Answers

recursive delete files from txt file or?

i have a txt file of image names that have to be deleted in pwd how can i use the txt file to delete the files in pwd and is it possible?--i might be able to import the txt files into a spreadsheet ahd same it as a csv file. i want it to be done recursive lly --what i mean is teh sysem goes thru... (4 Replies)
Discussion started by: plener
4 Replies

9. Shell Programming and Scripting

[Urgent]how to print the file names into a txt file???

HI, I have a folder with some 120 files...i just want to print all the file filenames(not the content or anything else) onto a file say .txt. please help me with this command Thanks a lot. (15 Replies)
Discussion started by: kumarsaravana_s
15 Replies

10. UNIX for Dummies Questions & Answers

How can I delete files using a file that containt path and names?

Recentily i receive virus ninda and my network was files *.eml. I find all *.eml with: find / -name *.eml -print > virus Virus has the path and name of the file,so, How can i delete all *.eml? Thanks (2 Replies)
Discussion started by: AlvaroD
2 Replies
Login or Register to Ask a Question