Need Help in ksh Script to list files older than 365 days from specified directories


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need Help in ksh Script to list files older than 365 days from specified directories
# 1  
Need Help in ksh Script to list files older than 365 days from specified directories

Requirement is to list the files older than 365 days from multiple directories and delete them and log the list of files which are deleted to a log file.

so 1 script should only list files older than 365 days for each directory separately to a folder

The other script should read these files and delete them and log the list of items which are deleted.

I am attaching the script i have for reference and the listing script and the output of the first script.

It is only listing for first directory not rest of the directories and i don't know how to keep write delete script.
# 2  
What didn't work with what was suggested in your other thread?

Why do you need a separate file for each directory? Why not just include full pathnames of all of the files you want to delete in one file?

Why do you need two scripts when you can create the list and remove the files in a single find command?
This User Gave Thanks to Don Cragun For This Post:
# 3  
We need separate log file for each directory is - these logs files will be reviewed and if no file is needed we will be removing it.

The suggesting by clx in my other tread is giving below error

Code:
+ find  /home/ /db/ /db/backup/ /staging/ /staging/codedrops/ /db/*/db2dump/ -type f -mtime +365
+ 1>> /staging/retain_for_2years/unix_clean_up_Test/logs/list_to_be_deleted.log
find: 0652-010 The starting directory is not valid

We need a time to review the generated logs - 2 or 3 days so we want to have a delete script sepeartely

---------- Post updated 02-28-15 at 08:04 AM ---------- Previous update was 02-27-15 at 04:45 PM ----------

Please kindly help me out

Last edited by Don Cragun; 02-28-2015 at 07:04 AM.. Reason: Add CODE tags.
# 4  
What is the output from the command:
Code:
ls -ld /home/ /db/ /db/backup/ /staging/ /staging/codedrops/ /db/*/db2dump/

You do realize that everything that will be in the output from the paths /db/backup/ and /db/*/db2dump/ will also be in the output from the path /db/ and that everything in the output from the path /staging/codedrops/ will also be in the output from the path /staging/, don't you?
# 5  
Thanks very much Don for replying.

The below is the output

Code:
drwxrwxrwx   31 root     db2cadm        4096 Feb 27 02:21 /db/
drwxrwxrwx   26 root     system        12288 Feb 19 04:27 /db/backup/
drwxr-xr-x    6 srpsdba1 db2cadm        4096 Dec 22 01:08 /db/srpsdba1/db2dump/
drwxrwxr-x    2 srpsdba1 db2cadm         256 Mar 26 2014  /db/srpsdba1_2/db2dump/
drwxrwxrwx    6 srpsdba2 db2cadm        4096 Jan 13 22:00 /db/srpsdba2/db2dump/
drwxr-xr-x    4 srpsdba7 db2cadm        4096 Dec 18 15:12 /db/srpsdba7/db2dump/
drwxrwxrwx    4 srpsdbc  db2cadm        4096 Feb 23 03:03 /db/srpsdbc/db2dump/
drwxrwxrwx    4 srpsh1   db2cadm        8192 Feb 17 05:57 /db/srpsh1/db2dump/
drwxr-xr-x    2 srpssq1  db2cadm         256 Mar 12 2014  /db/srpsq1/db2dump/
drwxrwxrwx    4 srpssd3  db2cadm        4096 Feb 23 09:20 /db/srpssd3/db2dump/
drwxrwxrwx    4 srpssd5  db2cadm        4096 Feb 27 14:41 /db/srpssd5/db2dump/
drwxr-xr-x    2 srpsh1   db2cadm         256 Feb 27 2014  /db/srpssh1/db2dump/
drwxrwxrwx    4 srpssq1  db2cadm        8192 Feb 26 11:46 /db/srpssq1/db2dump/
drwxrwxrwx    5 srpssq2  db2cadm        8192 Feb 26 03:35 /db/srpssq2/db2dump/
drwxr-xr-x  397 bin      bin           16384 Jan 15 11:06 /home/
drwxrwxrwx   16 root     system         4096 Jan 12 17:34 /staging/
drwxrwxrwx   51 dba_srps ezcssgrp       8192 Feb 27 12:24 /staging/codedrops/

Yes you are correct if the script list's the older files from the sub directories also then only /home/ /db/ /staging/ should be fine.

Can you please kindly help me out.

Thanks once again
Moderator's Comments:
Mod Comment Please use CODE tags when displaying sample input, output, and code segments.

Last edited by Don Cragun; 02-28-2015 at 07:02 AM.. Reason: Add CODE and ICODE tags.
# 6  
Quote:
Originally Posted by prasadn
Thanks very much Don for replying.

The below is the output

Code:
drwxrwxrwx   31 root     db2cadm        4096 Feb 27 02:21 /db/
drwxrwxrwx   26 root     system        12288 Feb 19 04:27 /db/backup/
drwxr-xr-x    6 srpsdba1 db2cadm        4096 Dec 22 01:08 /db/srpsdba1/db2dump/
drwxrwxr-x    2 srpsdba1 db2cadm         256 Mar 26 2014  /db/srpsdba1_2/db2dump/
drwxrwxrwx    6 srpsdba2 db2cadm        4096 Jan 13 22:00 /db/srpsdba2/db2dump/
drwxr-xr-x    4 srpsdba7 db2cadm        4096 Dec 18 15:12 /db/srpsdba7/db2dump/
drwxrwxrwx    4 srpsdbc  db2cadm        4096 Feb 23 03:03 /db/srpsdbc/db2dump/
drwxrwxrwx    4 srpsh1   db2cadm        8192 Feb 17 05:57 /db/srpsh1/db2dump/
drwxr-xr-x    2 srpssq1  db2cadm         256 Mar 12 2014  /db/srpsq1/db2dump/
drwxrwxrwx    4 srpssd3  db2cadm        4096 Feb 23 09:20 /db/srpssd3/db2dump/
drwxrwxrwx    4 srpssd5  db2cadm        4096 Feb 27 14:41 /db/srpssd5/db2dump/
drwxr-xr-x    2 srpsh1   db2cadm         256 Feb 27 2014  /db/srpssh1/db2dump/
drwxrwxrwx    4 srpssq1  db2cadm        8192 Feb 26 11:46 /db/srpssq1/db2dump/
drwxrwxrwx    5 srpssq2  db2cadm        8192 Feb 26 03:35 /db/srpssq2/db2dump/
drwxr-xr-x  397 bin      bin           16384 Jan 15 11:06 /home/
drwxrwxrwx   16 root     system         4096 Jan 12 17:34 /staging/
drwxrwxrwx   51 dba_srps ezcssgrp       8192 Feb 27 12:24 /staging/codedrops/

Yes you are correct if the script list's the older files from the sub directories also then only /home/ /db/ /staging/ should be fine.

Can you please kindly help me out.

Thanks once again
Moderator's Comments:
Mod Comment Please use CODE tags when displaying sample input, output, and code segments.
I was expecting to see a diagnostic for a non-existent pathname, or an unreadable or unsearchable directory to explain the error message you reported on the earlier find command. But, if you need separate lists for the files in /db, /home, and /staging maybe it doesn't matter.

What operating system and shell are you using?

See if:
Code:
for dir in /db /home /staging
do	find "$dir" -type f -mtime +365 > "${dir}_files.txt" &
done
wait

works for you.
# 7  
Don Sir,

I am getting this error when executing your code .

Code:
+ DIR=/home/, /db/, /staging/
+ DIR_LOG_FILE=/staging/retain_for_2years/unix_clean_up_Test/logs/Trail_list_to_be_deleted.log
+ + date +%Y:%m:%d
TIMESTAMP=2015:02:28
+ DAYS_OLD=365
+ IFS=$,
+ echo .....................................
+ 1>> /staging/retain_for_2years/unix_clean_up_Test/logs/Trail_list_to_be_deleted.log
+ echo Starting Generation job on : 2015:02:28
+ 1>> /staging/retain_for_2years/unix_clean_up_Test/logs/Trail_list_to_be_deleted.log
+ find /db -type f -mtime +365
+ + wait
+ find /home -type f -mtime +365
+ + find /staging -type f -mtime +365
+ 1> /db_files.txt
1> /staging_files.txt
1> /home_files.txt
+ echo Looking for Files in /home/, /db/, /staging/
+ 1>> /staging/retain_for_2years/unix_clean_up_Test/logs/Trail_list_to_be_deleted.log
+ echo Generated list of Deleted files
+ 1>> /staging/retain_for_2years/unix_clean_up_Test/logs/Trail_list_to_be_deleted.log
+ unset IFS
+ echo Generation of files  completed
+ 1>> /staging/retain_for_2years/unix_clean_up_Test/logs/Trail_list_to_be_deleted.log

=======================The Script Executed ================
Code:
##This script finds, logs and deletes files and folders older than 365 days #####
#/bin/ksh

DIR="/home/, /db/, /staging/"

DIR_LOG_FILE="/staging/retain_for_2years/unix_clean_up_Test/logs/Trail_list_to_be_deleted.log"

TIMESTAMP=`date +%Y:%m:%d`

DAYS_OLD="365" # This will find and delete folders and files older than 365 days.

IFS=$','

echo "....................................." >> $DIR_LOG_FILE

echo "Starting Generation job on : $TIMESTAMP" >> $DIR_LOG_FILE

for dir in /db /home /staging
do
find "$dir" -type f -mtime +$DAYS_OLD > "${dir}_files.txt" &
done
wait

echo "Looking for Files in $DIR" >> $DIR_LOG_FILE

echo "Generated list of Deleted files" >> $DIR_LOG_FILE

unset IFS
echo "Generation of files $NOW completed" >> $DIR_LOG_FILE

============== The Output of the Execution ==================

Code:
.....................................
Starting Generation job on : 2015:02:28
.....................................
Starting Generation job on : 2015:02:28
.....................................
Starting Generation job on : 2015:02:28
.....................................
Starting Generation job on : 2015:02:28
Looking for Files in /home/, /db/, /staging/
Generated list of Deleted files
.....................................
Starting Generation job on : 2015:02:28
Looking for Files in /home/, /db/, /staging/
Generated list of Deleted files
Generation of files  completed

=======================================

OS Aix 7.1.0.0 and

Last edited by Don Cragun; 02-28-2015 at 09:23 AM.. Reason: Add missing CODE tags.
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #584
Difficulty: Easy
Binary files generally requires less space and are more efficient to process.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

List files older than 10 days.

Hello all, I want to list the files older than 10 days. Currently am using find ./ -mtime +10 -exec ls -ltr {} \; command. But I want to execute the same command in 16 directories at a time and want an output asking to remove those file? Please help me to design the script. regards, Ajay (3 Replies)
Discussion started by: 02Ajay
3 Replies

2. Shell Programming and Scripting

List and Delete Files which are older than 7 days, but have white spaces in file name

I need to list and delete all files in current older which are olderthan 7 days. But my file names have white spaces. Before deleting I want to list all the files, so that I can verify.find . -type f -mtime +7 | xargs ls -l {} But the ls command is the working on the files which have white... (16 Replies)
Discussion started by: karumudi7
16 Replies

3. UNIX for Dummies Questions & Answers

How to compress the directories which is older than 7 days?

Hi all, how to compress the directories which is older 7 days. If any one knows please help me this is urgent. Thanks in advance (3 Replies)
Discussion started by: rameshpagadala
3 Replies

4. UNIX for Dummies Questions & Answers

List files older that 7 days in a dir, excluding all subdirs

Hi, I would like to list all files, older than 7 days, in a directory, but exclude all subdirectories in the find command. If I use find . -type f -mtime +7 all files in the subdirs are also included. How can I exclude them? Regards, JW (6 Replies)
Discussion started by: jwbijl
6 Replies

5. Shell Programming and Scripting

Finding directories older than 5 days

Hello, Motive: Search all directories which are older than 5 days. Example: consider following directory structure: abc/dir1 abc/dir1/dir abc/dir2 abc/dir3 abc/dir3/temp Suppose dir1 and dir3 are 5 days older. Then I am looking for a command which lists abc/dir1 and abic/dir3 only so that... (4 Replies)
Discussion started by: mytempid07
4 Replies

6. Shell Programming and Scripting

script to remove files older than 60 days

Hi I need help in the script which looks at a contorl file which has a list of file names like xxxx.12345 and I want to take only xxxxx and search in a specific directory and remove the file if its older than 60 days I have written something like this.. but seems to be wrong... (1 Reply)
Discussion started by: antointoronto
1 Replies

7. Shell Programming and Scripting

List the files which are older than 7 days

Hi Frnds, I have to list the files which are older than 7 days in the given directory. it should consider only the files and should not show subdirectories. Thanks, Raja (3 Replies)
Discussion started by: smr_rashmy
3 Replies

8. Shell Programming and Scripting

Script for parsing directories one level and finding directories older than n days

Hello all, Here's the deal...I have one directory with many subdirs and files. What I want to find out is who is keeping old files and directories...say files and dirs that they didn't use since a number of n days, only one level under the initial dir. Output to a file. A script for... (5 Replies)
Discussion started by: ejianu
5 Replies

9. Red Hat

Find files older than 30 days in directories and delete them

Hi, I have dummies questions: My script here can find the files in any directories older than 30 days then it will delete the files but not the directories. I would like to also be able to delete the directories that hold old files more than 30 days not just the files itself. find . -type f... (2 Replies)
Discussion started by: lamoul
2 Replies

10. Shell Programming and Scripting

Need to remove files older than 30 days except directories

Hi, I need to remove files (*.trc) which are older than 30 days from one location. My problem is there I do not want to visit any of the directories at that location. I want to search files at that particular location only (need to skip directorys at that location). maxdepth option is there... (6 Replies)
Discussion started by: malaymaru
6 Replies

Featured Tech Videos