Exclude file from a search script

Hello,

I use the following script to delete files from folders.
There is an old file I wish to exclude the deletion script.
How to exclude a file by name?

Current script:

#!/bin/ksh
# ----------------------------------------------------
# clean_log_folder.sh   
# Delete log files older than 90/60 days and capture output to a log file
#-----------------------------------------------------
#
# scripts and logs are stored
export PROGDIR=/var/tmp/
export LOGDIR=/var/tmp/
 
# logfile name and location
export LOG_FILE=${LOGDIR}/del_files_fe2.${LOGNAME}.log
 
# write current date/time to log file
echo "#- Files removed from xxxyyy log folder on - $(date) ---"        >> ${LOG_FILE}
cd /xxx/xxx/xxx/xxx
find . -mtime +90 -exec ls -l {} \; >> ${LOG_FILE}
find . -mtime +90 -exec rm -r {} \;
echo "#- Files removed from yyyzzz log folder on - $(date) ---"        >> ${LOG_FILE}
cd /xxx/xxx/xxx/xxx/xxx/xxx/xxx/
find . -mtime +60 -exec ls -l {} \; >> ${LOG_FILE}
find . -mtime +60 -exec rm -r {} \;

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

To exclude file names we can use NOT operator..

find . -mtime +60 ! \( -name 'version.sh' -o -name ary.sh \)  -exec ls -l {} \;

The above command excludes files version.sh and ary.sh. If only one file needs to be excluded then there is no need of brackets.

find . -mtime +60 ! -name 'version.sh' -exec ls -l {} \;
1 Like