a find script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting a find script
# 1  
Old 08-19-2005
a find script

I wrote this find script for all those questions about 'files created in the last three hours' and 'files created more than 2 minutes ago'. This script *will* recurse into subdirectories.
As always, please suggest/make changes as you see fit.

Code:
#!/usr/bin/ksh
#set -x                 # unhash for debugging

print_help(){
        echo "Usage: find.sh <num><h|m> dir_to_search_in <older|newer>"
        echo "example:
        find.sh 3m /tmp newer
this will search in /tmp for files created in the last 3 minutes.
        find.sh 3h /tmp older
this will search in /tmp for files older than 3 hours."
}

PERLDIR=/opt/perl/bin # you can specify the path of your perl binary here
if [ $# -ne 3 ]; then
        print_help
        exit -2
fi
ARG1=$1
ARG2=$2
ARG3=$3

case "$ARG3" in
        "newer") new_val="-newer";;
        "older") new_val="! -newer";;
        *) print_help; exit -2;;
esac
unit=`$PERLDIR/perl -w -e 'print chop $ARGV[0]' $ARG1`
diff=`$PERLDIR/perl -w -e 'print substr $ARGV[0],0,-1' $ARG1`
case $unit in
        h) mult=3600;;
        m) mult=60;;
        *) print_help; echo "PLEASE NOTE: Only hour or minute granularity supported. For coarser stuff, use regular find. Finer granularity not yet supported."; exit -1;;
esac
diff_sec=$(($diff*$mult))
then_time=`$PERLDIR/perl -w -e '@mytime=localtime (time - $ARGV[0]); printf "%d%.2d%.2d%.2d%.2d", $mytime[5]+1900,$mytime[4]+1,$mytime[3],$mytime[2],$mytime[1];
' $diff_sec`

touch -m ${then_time} $ARG2/file_for_find
find $ARG2 -type f $new_val $ARG2/file_for_find
rm $ARG2/file_for_find
exit

--EDIT--
This has been tested on a HPUX 11.11 system. All utilities are HPUX standard.
--EDIT--

Last edited by blowtorch; 08-19-2005 at 03:46 AM..
# 2  
Old 08-19-2005
I've posted a perl snippet about 5/6 times as well. It finds file times down to the second.

In production we use a little ditty in C that does math arithmetic based on seconds, then stats thru files looking for older/younger files. I posted part of that thing as well.
The problem is not that we haven't posted useful code, like yours, it's that the posters almost never do a search, or if they do a search they use 'file creation date' or some other non-sequitur term that probably won't find anything useful.
# 3  
Old 08-19-2005
The find article in our FAQ section mentions the touch/find trick but many users can't even be bothered to scan the FAQ section prior to asking a question. I will link this thread in the FAQ article as well. It will help those users who do read the FAQ's.
# 4  
Old 11-14-2006
a small error?

I found that it didn't work.

I had to make a small change to the touch line to add "-t" before the time variable.

i.e.

touch -m -t ${then_time} $ARG2/file_for_find

then it worked.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with better find script

hi everyone i tried to write my first script on unix solaris the target is to find every file had size above 200M and save it to log file with size and path i can do this but i still don't like it #!/bin/bash find / type f -size +200M -ls | log.txt is there better way to do this !!... (3 Replies)
Discussion started by: mondo32
3 Replies

2. UNIX for Dummies Questions & Answers

Perl Script:how to find how many parameters are required to run the script

How to find how many parameters are required to run a Perl script? (1 Reply)
Discussion started by: Lakshman_Gupta
1 Replies

3. Shell Programming and Scripting

How to find a script?

I need to find the script named jip.sh how can i search it ? (13 Replies)
Discussion started by: rafa_fed2
13 Replies

4. Shell Programming and Scripting

Shell script to find the sum of argument passed to the script

I want to make a script which takes the number of argument, add those argument and gives output to the user, but I am not getting through... Script that i am using is below : #!/bin/bash sum=0 for i in $@ do sum=$sum+$1 echo $sum shift done I am executing the script as... (3 Replies)
Discussion started by: mukulverma2408
3 Replies

5. Shell Programming and Scripting

Need help to find script

Hello, I have a log file which is called datafile.info. This file contains data from a script but I can't find the script. I have tried to grep the file name but I am only getting the output files back. I have also tried find but no luck again. Is there a way to find the script... (2 Replies)
Discussion started by: INHF
2 Replies

6. Shell Programming and Scripting

Find script

Hello, as I'm doing my first steps in Linux I'm trying to create bash file that will search file\s in folders by using the Find command. can u help me with the script? it should be : myfind.sh thanx! (2 Replies)
Discussion started by: SimonBASH
2 Replies

7. Shell Programming and Scripting

Help with find in a script

Hi, I am trying to find files in a directory. I am passing a part of the file name as parameter 3 in my script. but my find command doesn't see to take it correctly find $IRC_PATH -type f -name `${3}`*.gz -print Here $3 is part of file name I am passing as parameter. My files will look... (11 Replies)
Discussion started by: dsravan
11 Replies

8. Shell Programming and Scripting

Need help in a find script

i have a below script that will give me the filename along with the their size if the file size is more than 1 GB for j in `find /ednadtu3/u01/pipe -type f -size +1048576` do du -g $j done -------------------------------------------------------------------------- the above script is... (3 Replies)
Discussion started by: ali560045
3 Replies

9. Shell Programming and Scripting

Getting a script to find another script via lookup service

Hi, I'm trying to write a basic script which will measure throughput at a node on a network, and pass the results on to a manager script (running on another node on the same network). I presume that I need to use some sort of naming service, so that the manager can publish its location. From what I... (2 Replies)
Discussion started by: zeppelin147
2 Replies

10. Shell Programming and Scripting

how to find Script file location inside script

I have to find out the file system location of the script file inside script. for example a script "abc.sh" placed anywhere in the file system when executed shold tell by itself the location of it. example #pwd / #./abc this is / #cd /root #./abc this is /root #cd / #/root/abc this... (10 Replies)
Discussion started by: asami
10 Replies
Login or Register to Ask a Question