<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: FTP Folder cleanup script in Operating System - HP-UX</title>
    <link>https://community.hpe.com/t5/operating-system-hp-ux/ftp-folder-cleanup-script/m-p/5631139#M638055</link>
    <description>&lt;P&gt;&amp;gt;I need the file name like this txt1.txt txt2.txt txt3.txt.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What do you mean?&amp;nbsp; All on one line?&amp;nbsp; Or only with the string "txt"?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Some optimizations you can make:&lt;/P&gt;&lt;P&gt;&amp;gt;find $JOBLOG -name $1\* -atime $2 | xargs rm -f 2&amp;gt;/dev/null&lt;BR /&gt;&amp;gt;find $JOBLOG -name $1\* -mtime +$2 | xargs rm -f 2&amp;gt;/dev/null&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Combine the two:&lt;/P&gt;&lt;P&gt;find $JOBLOG -name $1\* \( -atime $2 -o&amp;nbsp; -mtime +$2 \) -exec rm -f {} + 2&amp;gt;/dev/null&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Instead of using let, just use (( )):&lt;/P&gt;&lt;P&gt;(( files_to_delete=count-$2 ))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Instead of using this pattern, use while read:&lt;/P&gt;&lt;P&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((i &amp;lt;= files_to_delete)); do&lt;BR /&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; current_file=`ls -tr $JOBLOG/$1* | head -n${files_to_delete} | head -n$i | tail -n1`&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ls -tr $JOBLOG/$1* | head -n${files_to_delete} | while read file; do&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I don't think you need a for-loop here:&lt;/P&gt;&lt;P&gt;&amp;gt;for buffer in ${command_array[*]}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;rm -f&amp;nbsp; "${command_array[@]}" 2&amp;gt; /dev/null&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You probably want to combine these so you don't search 4 times:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; find $FTPOUT -name $1\* -atime $2 |awk -F/ '{print $NF}' &amp;gt; $FTPOUT/FTP_Delete.txt&lt;BR /&gt;&amp;nbsp;&amp;nbsp; find $FTPOUT -name $1\* -atime $2 | xargs rm -f 2&amp;gt;/dev/null&lt;BR /&gt;&amp;nbsp;&amp;nbsp; find $FTPOUT -name $1\* -mtime +$2 |awk -F/ '{print $NF}' &amp;gt;&amp;gt; $FTPOUT/FTP_Delete.txt&lt;BR /&gt;&amp;nbsp;&amp;nbsp; find $FTPOUT -name $1\* -mtime +$2 | xargs rm -f 2&amp;gt;/dev/null&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I.e. Do one find and put it into a file.&amp;nbsp; Use that with xargs to remove.&amp;nbsp; Then pass through awk.&lt;/P&gt;</description>
    <pubDate>Mon, 23 Apr 2012 08:08:08 GMT</pubDate>
    <dc:creator>Dennis Handly</dc:creator>
    <dc:date>2012-04-23T08:08:08Z</dc:date>
    <item>
      <title>FTP Folder cleanup script</title>
      <link>https://community.hpe.com/t5/operating-system-hp-ux/ftp-folder-cleanup-script/m-p/5630901#M638054</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Pls go through and suggest me in the" #Get the individual recipient from the parsed file..." section&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need the file name like this txt1.txt txt2.txt txt3.txt.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#!/bin/ksh -v&lt;BR /&gt;##################################################################################&lt;BR /&gt;# Log File manipulation functions&lt;BR /&gt;# To be sourced in main job script files&lt;BR /&gt;##################################################################################&lt;BR /&gt;&lt;BR /&gt;##################################################################################&lt;BR /&gt;# FUNCTION keep_n_most_recent_days&lt;BR /&gt;##################################################################################&lt;BR /&gt;# Parameters&lt;BR /&gt;##################################################################################&lt;BR /&gt;# 1.Log File Partial Name (unique application descriptor)&lt;BR /&gt;# 2.How many days worth of log file should remain in place&lt;BR /&gt;##################################################################################&lt;BR /&gt;# Check the application related log files and delete all logs more than n days old&lt;BR /&gt;##################################################################################&lt;BR /&gt;function keep_n_most_recent_days {&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # Identify log files to be dropped in specified margin and execute deletion...&lt;BR /&gt;&amp;nbsp;&amp;nbsp; find $JOBLOG -name $1\* -atime $2 | xargs rm -f 2&amp;gt;/dev/null&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # Delete any outstanding files out of specificed margin (after the weekend)...&lt;BR /&gt;&amp;nbsp;&amp;nbsp; find $JOBLOG -name $1\* -mtime +$2 | xargs rm -f 2&amp;gt;/dev/null&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; return&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;##################################################################################&lt;BR /&gt;# FUNCTION keep_n_most_recent_only&lt;BR /&gt;##################################################################################&lt;BR /&gt;# Parameters&lt;BR /&gt;##################################################################################&lt;BR /&gt;# 1.Log File Partial Name (unique application descriptor)&lt;BR /&gt;# 2.How many most recent log files should remain in place&lt;BR /&gt;##################################################################################&lt;BR /&gt;# Check the application related log files and delete all but n most recent&lt;BR /&gt;##################################################################################&lt;BR /&gt;function keep_n_most_recent_only {&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # How many application related log files we have?&lt;BR /&gt;&amp;nbsp;&amp;nbsp; let count=`ls $JOBLOG/$1* | wc -l`&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # If we are to keep more that the existing ones...&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if ((count &amp;lt;= $2)); then&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ...all existing log files should be kept in that case.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo 'not needed'&amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # How many do we need to delete?&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let files_to_delete=count-$2&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let i=1&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((i &amp;lt;= files_to_delete)); do&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # loop through and pick the older log files&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; current_file=`ls -tr $JOBLOG/$1* | head -n${files_to_delete} | head -n$i | tail -n1`&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # save the log file names into an array&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command_array[(i-1)]=${current_file}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let i=i+1&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Array should have ${#command_array[*]} members&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Now that we have the old log file name&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # we can go ahead and delete them&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for buffer in ${command_array[*]}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rm $buffer&amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; fi&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; return&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;##################################################################################&lt;BR /&gt;# FUNCTION keep_n_most_recent_only_flex&lt;BR /&gt;##################################################################################&lt;BR /&gt;# Parameters&lt;BR /&gt;##################################################################################&lt;BR /&gt;# 1.Log File Partial Name (unique application descriptor)&lt;BR /&gt;# 2.How many most recent log files should remain in place&lt;BR /&gt;# 3.What directory we should look at (improvement over keep_n_most_recent_only)&lt;BR /&gt;##################################################################################&lt;BR /&gt;# Check the application related log files and delete all but n most recent&lt;BR /&gt;##################################################################################&lt;BR /&gt;function keep_n_most_recent_only_flex {&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # How many application related log files we have?&lt;BR /&gt;&amp;nbsp;&amp;nbsp; let count=`ls $3/$1* | wc -l`&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # If we are to keep more that the existing ones...&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if ((count &amp;lt;= $2)); then&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # ...all existing log files should be kept in that case.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo 'not needed'&amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # How many do we need to delete?&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let files_to_delete=count-$2&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let i=1&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((i &amp;lt;= files_to_delete)); do&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # loop through and pick the older log files&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; current_file=`ls -tr $3/$1* | head -n${files_to_delete} | head -n$i | tail -n1`&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # save the log file names into an array&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command_array[(i-1)]=${current_file}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let i=i+1&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Array should have ${#command_array[*]} members&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Now that we have the old log file name&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # we can go ahead and delete them&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for buffer in ${command_array[*]}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rm $buffer&amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; fi&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; return&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;##################################################################################&lt;BR /&gt;##################################################################################&lt;BR /&gt;# FUNCTION TO DELETE FILES IN FTPOUT FOLDER&lt;BR /&gt;##################################################################################&lt;BR /&gt;# Parameters&lt;BR /&gt;##################################################################################&lt;BR /&gt;# 1.FTP File Partial Name (unique application descriptor)&lt;BR /&gt;# 2.How many days worth of FTP file should remain in place&lt;BR /&gt;# 3.FTP Server Name&lt;BR /&gt;# 4.FTP User Name&lt;BR /&gt;# 5.FTP Password&lt;BR /&gt;# 6.FTP LOG File&lt;BR /&gt;##################################################################################&lt;BR /&gt;# Check the application related FTP files and delete all FTP more than n days old&lt;BR /&gt;##################################################################################&lt;BR /&gt;function keep_FTP_n_most_recent_days {&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # Identify ftp files to be dropped in specified margin and execute deletion...&lt;BR /&gt;&amp;nbsp;&amp;nbsp; find $FTPOUT -name $1\* -atime $2 |awk -F/ '{print $NF}' &amp;gt; $FTPOUT/FTP_Delete.txt&lt;BR /&gt;&amp;nbsp;&amp;nbsp; find $FTPOUT -name $1\* -atime $2 | xargs rm -f 2&amp;gt;/dev/null&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # Delete any outstanding files out of specificed margin (after the weekend)...&lt;BR /&gt;&amp;nbsp;&amp;nbsp; find $FTPOUT -name $1\* -mtime +$2 |awk -F/ '{print $NF}' &amp;gt;&amp;gt; $FTPOUT/FTP_Delete.txt&lt;BR /&gt;&amp;nbsp;&amp;nbsp; find $FTPOUT -name $1\* -mtime +$2 | xargs rm -f 2&amp;gt;/dev/null&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; #Get the line number, parse out empty spaces and empty lines...&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; let count=`cat $FTPOUT/FTP_Delete.txt | tr -s "\012" | tr -d " " | wc -l`&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; #Reset counter&lt;BR /&gt;&amp;nbsp;&amp;nbsp; let i=1&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; #Loop in...&lt;BR /&gt;&amp;nbsp;&amp;nbsp; while ((i &amp;lt;= count)); do&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Get the individual recipient from the parsed file...&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filename=`cat $FTPOUT/FTP_Delete.txt | tr -s "\012" | tr -d " " | head -n$i | tail -n1`&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Time to call the delete ftp file function...&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delete_FTP_Files $3 $4 $5 $filename $6&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let i=i+1&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; done&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; return&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;#################################################################################&lt;BR /&gt;##################################################################################&lt;BR /&gt;##################################################################################&lt;BR /&gt;# FUNCTION TO DELETE FILES IN FTP FOLDER&lt;BR /&gt;##################################################################################&lt;BR /&gt;# Parameters&lt;BR /&gt;##################################################################################&lt;BR /&gt;# 1.FTP Server Name&lt;BR /&gt;# 2.FTP User Name&lt;BR /&gt;# 3.FTP Password&lt;BR /&gt;# 4.FTP File Name&lt;BR /&gt;# 5.FTP LOG File&lt;BR /&gt;##################################################################################&lt;BR /&gt;# Delete the FTP files from the destination&lt;BR /&gt;##################################################################################&lt;BR /&gt;function delete_FTP_Files {&lt;BR /&gt;&lt;BR /&gt;FTPServer=$1&lt;BR /&gt;FTPUserID=$2&lt;BR /&gt;FTPUserPswd=$3&lt;BR /&gt;&lt;BR /&gt;echo $4&lt;BR /&gt;echo $5&lt;BR /&gt;#FTP Command Section&lt;BR /&gt;ftp -v -n&amp;lt;&amp;lt;EOF&amp;gt;$5&lt;BR /&gt;&amp;nbsp;&amp;nbsp; open $FTPServer&lt;BR /&gt;&amp;nbsp;&amp;nbsp; user $FTPUserID $FTPUserPswd&lt;BR /&gt;&amp;nbsp;&amp;nbsp; delete $4&lt;BR /&gt;bye&lt;BR /&gt;EOF&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;#################################################################################&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 23 Apr 2012 06:52:46 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-hp-ux/ftp-folder-cleanup-script/m-p/5630901#M638054</guid>
      <dc:creator>gnana prakasam</dc:creator>
      <dc:date>2012-04-23T06:52:46Z</dc:date>
    </item>
    <item>
      <title>Re: FTP Folder cleanup script</title>
      <link>https://community.hpe.com/t5/operating-system-hp-ux/ftp-folder-cleanup-script/m-p/5631139#M638055</link>
      <description>&lt;P&gt;&amp;gt;I need the file name like this txt1.txt txt2.txt txt3.txt.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What do you mean?&amp;nbsp; All on one line?&amp;nbsp; Or only with the string "txt"?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Some optimizations you can make:&lt;/P&gt;&lt;P&gt;&amp;gt;find $JOBLOG -name $1\* -atime $2 | xargs rm -f 2&amp;gt;/dev/null&lt;BR /&gt;&amp;gt;find $JOBLOG -name $1\* -mtime +$2 | xargs rm -f 2&amp;gt;/dev/null&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Combine the two:&lt;/P&gt;&lt;P&gt;find $JOBLOG -name $1\* \( -atime $2 -o&amp;nbsp; -mtime +$2 \) -exec rm -f {} + 2&amp;gt;/dev/null&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Instead of using let, just use (( )):&lt;/P&gt;&lt;P&gt;(( files_to_delete=count-$2 ))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Instead of using this pattern, use while read:&lt;/P&gt;&lt;P&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((i &amp;lt;= files_to_delete)); do&lt;BR /&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; current_file=`ls -tr $JOBLOG/$1* | head -n${files_to_delete} | head -n$i | tail -n1`&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ls -tr $JOBLOG/$1* | head -n${files_to_delete} | while read file; do&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I don't think you need a for-loop here:&lt;/P&gt;&lt;P&gt;&amp;gt;for buffer in ${command_array[*]}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;rm -f&amp;nbsp; "${command_array[@]}" 2&amp;gt; /dev/null&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You probably want to combine these so you don't search 4 times:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; find $FTPOUT -name $1\* -atime $2 |awk -F/ '{print $NF}' &amp;gt; $FTPOUT/FTP_Delete.txt&lt;BR /&gt;&amp;nbsp;&amp;nbsp; find $FTPOUT -name $1\* -atime $2 | xargs rm -f 2&amp;gt;/dev/null&lt;BR /&gt;&amp;nbsp;&amp;nbsp; find $FTPOUT -name $1\* -mtime +$2 |awk -F/ '{print $NF}' &amp;gt;&amp;gt; $FTPOUT/FTP_Delete.txt&lt;BR /&gt;&amp;nbsp;&amp;nbsp; find $FTPOUT -name $1\* -mtime +$2 | xargs rm -f 2&amp;gt;/dev/null&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I.e. Do one find and put it into a file.&amp;nbsp; Use that with xargs to remove.&amp;nbsp; Then pass through awk.&lt;/P&gt;</description>
      <pubDate>Mon, 23 Apr 2012 08:08:08 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-hp-ux/ftp-folder-cleanup-script/m-p/5631139#M638055</guid>
      <dc:creator>Dennis Handly</dc:creator>
      <dc:date>2012-04-23T08:08:08Z</dc:date>
    </item>
  </channel>
</rss>

