Problems with find's -newer Flag


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problems with find's -newer Flag
# 1  
Old 06-30-2009
Problems with find's -newer Flag

I am writing a script that looks in a reports directory, copies a specified script to a working folder, copies some data files into the working folder, runs the report, zips the new files, then uploads them.

Right now to determine what files to zip (as I don't know how many report files there will be, what size, or what they are going to be called), I'm using 'find'.

So basically this is what I have so far:

Code:
touch report_start #Marker before files are created

touch -t 200201311759.30 *

yes | runjob $repname > /dev/null

pwd

find /home/webreports/data/$tag -newer "report_start" -type f -print # | zip $study -@  #Zip the files that are newer than report_start

The problem seems to be that find doesn't return anything! When I comment out the zip function, nothing prints out. If I were to search for a name I get file names. Am I missing something, or is the -newer flag not working?

An ls command.

Code:
ls --time-style='+%d-%m-%Y %H:%M:%S' -l
total 16668
-rw-rw-rw-  1 cfmc cfmc 1348372 31-01-2002 17:59:30 fd9006y.db
-rw-rw-rw-  1 cfmc cfmc 3620864 31-01-2002 17:59:30 fd9006y.fnx
-rw-rw-rw-  1 cfmc cfmc 9650176 31-01-2002 17:59:30 fd9006y.fny
-rw-rw-rw-  1 cfmc cfmc   12888 31-01-2002 17:59:30 fd9006y.fon
-rw-rw-rw-  1 cfmc cfmc 1197688 31-01-2002 17:59:30 fd9006y.qff
-rw-rw-rw-  1 cfmc cfmc   60144 31-01-2002 17:59:30 fd9006y.quo
-rw-r--r--  1 cfmc cfmc  501782 31-01-2002 17:59:30 fd9006y.tr
-rw-rw-rw-  1 cfmc cfmc  167928 30-06-2009 13:54:04 output1.rfl
-rw-rw-rw-  1 cfmc cfmc    1358 30-06-2009 13:54:05 output1.rft
-rw-rw-rw-  1 cfmc cfmc  427232 30-06-2009 13:54:05 output1.sps
-rwxrwxr-x  1 cfmc cfmc     820 31-01-2002 17:59:30 output.spx
-rwxrwxr-x  1 cfmc cfmc     820 31-01-2002 17:59:30 output.spx.backup
-rwxrwxr-x  1 cfmc cfmc     820 31-01-2002 17:59:30 output.spx.backup1
-rwxrwxr-x  1 cfmc cfmc     820 31-01-2002 17:59:30 output.spx.backup2
-rw-rw-rw-  1 cfmc cfmc       0 31-01-2002 17:59:30 report_start

EDIT: Realized that I had put in test code instead of the real command that I used. I will also add that -mtime 1 doesn't seem to work either.

Last edited by droppedonjapan; 06-30-2009 at 05:13 PM..
# 2  
Old 06-30-2009
Quote:
Originally Posted by droppedonjapan
Code:
touch report_start #Marker before files are created

touch -t 200201311759.30 *

yes | runjob $repname > /dev/null

pwd

find /home/webreports/data/$tag  -mtime -1 -print  | zip $study -@  #Zip the files that are newer than report_start

The problem seems to be that find doesn't return anything! When I comment out the zip function, nothing prints out. If I were to search for a name I get file names. Am I missing something, or is the -newer flag not working?
Don't know if the newer flag works or not, since you're not using it in your example. If, however you want to use it, just touch the report_start file (no need to modify the timestamp of the other files) and run
Code:
find /home/webreports/data/$tag -newer report_start -print | ...

That should do the trick.
# 3  
Old 06-30-2009
Yeah, I realized that I had put in the wrong code when I initially posted this. I've tried this exact code and this is the output:

Code:
/home/webreports/data/65202

Another ls of the directory with the exact code you supplied:

Code:
total 17980
-rw-rw-rw-  1 cfmc cfmc 1348372 31-01-2002 17:59:30 fd9006y.db
-rw-rw-rw-  1 cfmc cfmc 3620864 31-01-2002 17:59:30 fd9006y.fnx
-rw-rw-rw-  1 cfmc cfmc 9650176 31-01-2002 17:59:30 fd9006y.fny
-rw-rw-rw-  1 cfmc cfmc   42360 31-01-2002 17:59:30 fd9006y.fon
-rw-rw-rw-  1 cfmc cfmc 1197688 31-01-2002 17:59:30 fd9006y.qff
-rw-rw-rw-  1 cfmc cfmc   60144 31-01-2002 17:59:30 fd9006y.quo
-rw-r--r--  1 cfmc cfmc  508000 31-01-2002 17:59:30 fd9006y.tr
-rw-rw-rw-  1 cfmc cfmc  167928 30-06-2009 15:13:48 output1.rfl
-rw-rw-rw-  1 cfmc cfmc    7469 30-06-2009 15:13:48 output1.rft
-rw-rw-rw-  1 cfmc cfmc  427232 30-06-2009 15:13:48 output1.sps
-rwxrwxr-x  1 cfmc cfmc     820 31-01-2002 17:59:30 output.spx
-rwxrwxr-x  1 cfmc cfmc     820 31-01-2002 17:59:30 output.spx.backup
-rwxrwxr-x  1 cfmc cfmc     820 31-01-2002 17:59:30 output.spx.backup1
-rwxrwxr-x  1 cfmc cfmc     820 31-01-2002 17:59:30 output.spx.backup2
-rw-rw-rw-  1 cfmc cfmc  427232 31-01-2002 17:59:30 putput1.sps
-rw-rw-rw-  1 cfmc cfmc  427232 31-01-2002 17:59:30 qutput1.sps
-rw-rw-rw-  1 cfmc cfmc       0 31-01-2002 17:59:30 report_start
-rw-rw-rw-  1 cfmc cfmc  427232 31-01-2002 17:59:30 rutput1.sps

Exact code that I used:

Code:
touch report_start #Marker before files are created

touch -t 200201311759.30 *

yes | runjob $repname > /dev/null

pwd

find /home/webreports/data/$tag -newer report_start -print # | zip $study -@  #Zip the files that are newer than report_start

# 4  
Old 06-30-2009
Just an idea: try replacing
Code:
find /home/webreports/data/$tag

with
Code:
find /home/webreports/data/$tag/*

# 5  
Old 06-30-2009
Hmm, when I manually put that into the command line it works, but when it's done from my script nothing is printed. I also tried to pipe it into the zip command and it said that there wasn't anything to do (as if it didn't get anything sent into it). I'm going to post the entire script here. Maybe I screwed something up in there that's messing this up.

Code:
#!/bin/bash  

export CFMCHOME=/home/cfmc/
export study=$1
export tag=$2
export repname=$3
export specop1=$4
export specop2=$5
export specop3=$6

mkdir /home/webreports/data/$tag

echo "before cp"

cp /home/webreports/custreports/$study/$repname /home/webreports/data/$tag
cd /home/webreports/data/$tag

echo "before copylive"

copylive $study

sed -i.backup -e "s/thisisspecopt1/$specop1/" $repname
sleep .1

sed -i.backup1 -e "s/thisisspecopt2/$specop2/" $repname
sleep .1

sed -i.backup2 -e "s/thisisspecopt3/$specop3/" $repname
sleep .1



touch report_start #Marker before files are created

touch -t 200201311759.30 *

yes | runjob $repname > /dev/null

pwd

find /home/webreports/data/$tag/* -newer report_start -type f -print | zip $study -@  #Zip the files that are newer than report_start





exit 0

Full output of the script:

Code:
customreport fd9006y 65202 output.spx
before cp
before copylive
/home/webreports/data/65202

zip error: Nothing to do! (fd9006y.zip)
[cfmc@CFMC2 scripts]$

# 6  
Old 06-30-2009
Can you run theses commands and post their output here...
Code:
cd /home/webreports/data/65202     # is this the dir where the files are
touch -t 200201311759.30 report_stat
find . -type f -newer report_start -print

# 7  
Old 07-01-2009
Here's the output:

Code:
[cfmc@CFMC2 scripts]$ cd ../data/65202/
[cfmc@CFMC2 65202]$ touch -t 200201311759.30 report_stat
[cfmc@CFMC2 65202]$ find . -type f -newer report_start -print
./output1.rfl
./output1.sps
[cfmc@CFMC2 65202]$

This is what gets me. The command works by itself, but not when I use it via script.

EDIT: It looks like you typed report_stat instead of report_start. Updated output:

Code:
[cfmc@CFMC2 65202]$ touch -t 200201311759.30 report_start
[cfmc@CFMC2 65202]$ find . -type f -newer report_start -print
./output1.rfl
./output1.sps
[cfmc@CFMC2 65202]$

EDIT 2:

I figured out another way of getting the new files. Don't worry about the find problem.

Last edited by droppedonjapan; 07-01-2009 at 01:09 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Flag Programs that have coding problems

I create a shell script program (AIX OS) that flags any logs that certain keywords such as memsize, sasfoundation, and real time. My program isn't working maybe because my syntax logistic isn't correct. Here are examples of the logs: file1.log.02897 file2.log.02896 filez.log.02899 ... (5 Replies)
Discussion started by: dellanicholson
5 Replies

2. Shell Programming and Scripting

find command not searching path when -newer specified

When this command is issued from a directory other than where the file is located it works fine: find /db2/D01/log_archive/ -name "S0002166.LOG" -type f /db2/D01/log_archive/db2d01/D01/NODE0000/C0000000/S0002166.LOG When I change -name to -newer, it doesn't work. Find only searches the current... (5 Replies)
Discussion started by: fletchdb2
5 Replies

3. UNIX for Dummies Questions & Answers

Find files newer than x days

We had an arrant rsync run and started copying over new files from one system to another. Although this is what we will want to do at some point, for now, we want to maintain the system as it was a few days ago. I am looking for a script that will find files that are newer than x days. ... (5 Replies)
Discussion started by: Leyva62
5 Replies

4. Shell Programming and Scripting

how to find a file then overwrite with a newer version

This should be a simple script, but can't find one with google search. I just need to find the file that is in many directories, then overwrite that file with a newer version i.e. find file.jar then overwrite with /root/file.jar All I get in searches is substitute text with new test inside... (1 Reply)
Discussion started by: haircat
1 Replies

5. Shell Programming and Scripting

recently introduced to the newer option for find...does an older option exist?

To find all the files in your home directory that have been edited in some way since the last tar file, use this command: find . -newer backup.tar.gz Is anyone familiar with an older solution? looking to identify files older then 15mins across several directories. thanks, manny (2 Replies)
Discussion started by: mr_manny
2 Replies

6. Shell Programming and Scripting

How to script to find the newer date in a text file?

Hi, I have a text file, foo.txt, it looks something like below. In the file there is a line that gives the date in the form of: Mon Jun 15 11:09:31 2008. I need to find which date is the newest and then store certain details of that list data to another file. So, in this sample text file, I... (6 Replies)
Discussion started by: boolean2222
6 Replies

7. Shell Programming and Scripting

find and size flag

Hello everyone, I would like to filter and search for files in my curr dir where the blocks used by those files are over a certain number (i.e. 30), when I try this command find . -name "c*" -size +30 -exec ls -ls {} \; I get a list of files, the first column is the block size, right? ... (1 Reply)
Discussion started by: gio001
1 Replies

8. UNIX for Advanced & Expert Users

find -cmin or fin -newer

I am running SUSE/8 and SUSE/9 on a high end server (4 CPU, 8G RAM etc) I have a huge directory structure with over 4million files in it. I have find the files that are modified (created, modified, renamed etc etc) in the last 10 minutes periodically. I have tried "find -cmin -10" and "find... (2 Replies)
Discussion started by: xxxyyyy
2 Replies

9. Shell Programming and Scripting

Problem with find ! -newer

Hi, I would like to find if a file called test.log is older than 10 min. So i wrote : #!/usr/bin/ksh FICLOG="/home/uuu/result_test.log" FIC="/home/uuu/test.log" touch -t `perl -e 'use POSIX qw(strftime); printf("%s\n",strftime("%m%d%H%M",localtime(time-3600*0.17)));'`... (3 Replies)
Discussion started by: dbfree
3 Replies

10. UNIX for Dummies Questions & Answers

Find files newer than...

Is there a way to use the find command to locate files newer than a specific date? Thanks! --Alex (4 Replies)
Discussion started by: vertigo23
4 Replies
Login or Register to Ask a Question