Visit Our UNIX and Linux User Community


Remove file isn't working


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Remove file isn't working
# 1  
Old 04-21-2020
Remove file isn't working

I'm trying to delete the files that are 5 days old..
Clearly the modified date is April 15 for workorders.sql
My code won't delete it. However if I use +4 then it will delete it. Am I missing something?

Code:
-rw-r--r-- 1 dbadmin dbadmin    1331824 Apr 15 18:34 wmweb_test.sql.gz
-rw-r--r-- 1 dbadmin dbadmin 6531478011 Apr 15 19:10 workorders.sql


Code:
find ~/delete/2020-04-15/*.sql -type f -atime +5 -exec rm -rf '{}' \;

I also tried with but it still doesn't delete the file.
Code:
find ~/delete/2020-04-15/*.sql -type f -mtime +5 -exec rm -rf '{}' \;
find ~/delete/2020-04-15/*.sql -type f -ctime +5 -exec rm -rf '{}' \;

# 2  
Old 04-22-2020
Please specify your operating system details along with your shell.

mtime - modified time- time the file has been written / deleted from, displayed as Modify: ... using stat command against file.
ctime - creation time - time the file was created, displayed as Birth: .. using stat command against file (if maintained)
atime - access time - time the file was accessed, displayed as Access: .. using stat command against file (if maintained)

So trying those switches without understanding them, can delete a lot of stuff you probably do not want.

+4 is correct format, since +0 is 24 hours from the time find was executed.

Code:
user@host:~/files/sql$ date
Wed 22 Apr 2020 06:38:58 AM CEST
user@host:~/files/sql$ ls -lrt 
total 0
-rw-r--r-- 1 user user 0 Apr 17 16:00 workorders.sql
-rw-r--r-- 1 user user 0 Apr 22 06:18 wmweb_test.sql.gz

user@host:~/files/sql$ find /path/to/files/sql -type f -name "*.sql" -mtime +4 # nothing found, why ?

Lets look at the manual for -atime as it explains the rounding which happens on all time options :

Quote:
-atime n
File was last accessed n*24 hours ago. When find figures out how many 24-hour periods ago the file was last accessed, any fractional part is ignored, so to match -atime +1, a file has to have been accessed at least two days ago.
Ok this makes is more clear, but how can i find what i want using GNU find ?

Quote:
-daystart
Measure times (for -amin, -atime, -cmin, -ctime, -mmin, and -mtime) from the beginning of today rather than from 24 hours ago. This option only affects tests which appear later on the command line.
Code:
user@host:~/files/sql$ find /path/to/files/sql -daystart -type f -name "*.sql" -mtime +4
/path/to/files/sql/workorders.sql

If you are not using GNU find or need greater resolution from / to, that can be achived using touch with temporary files, and using -newer and ! -newer with find.
Forum is full of those examples, so use a search option please.

Hope that helps
Regards
Peasant.
This User Gave Thanks to Peasant For This Post:
# 3  
Old 04-22-2020
Those results may depend on the time that you issue the find command. man find:


Quote:
-atime n
File was last accessed n*24 hours ago. When find figures out how many 24-hour periods ago the file was last accessed, any fractional part
is ignored, so to match -atime +1, a file has to have been accessed at least two days ago.
-ctime n
File's status was last changed n*24 hours ago. See the comments for -atime to understand how rounding affects the interpretation of file
status change times.
-mtime n
File's data was last modified n*24 hours ago. See the comments for -atime to understand how rounding affects the interpretation of file
modification times.
This User Gave Thanks to RudiC For This Post:
# 4  
Old 04-22-2020
@peasant
Many thanks for your reply.

The OS is debian-linux-gnu

It looks like using atime is not the best choice and ctime is the ideal switch as the files in the folder won't be written once it is created.

Previous Thread | Next Thread
Test Your Knowledge in Computers #593
Difficulty: Medium
C is a statically typed language so variables must be declared along with their types before using them.
True or False?

10 More Discussions You Might Find Interesting

1. HP-UX

Syslog daemon isn't working

Hi All, I've tried starting syslogd on our hp-ux 11.31 server. However, it is not getting started nor it is updating the syslog file. There is no space issue also. However, the mail.log file is approx 2GB, can that be of any issue. Please find the details below: # /sbin/init.d/syslogd... (2 Replies)
Discussion started by: Kits
2 Replies

2. Shell Programming and Scripting

Chmod working in sudo run script but chown isn't

My git user has permission in sudoers to run a wrapper script to move files into my webroot. Everything is working fine except for the chown line. After the script has run, the files ar still root:root instead of apache:apache. Scratching my head...:confused: #!/bin/sh echo echo "****... (4 Replies)
Discussion started by: dheian
4 Replies

3. Shell Programming and Scripting

export of a variable isn't working

Hi I want export input data ... echo "month: " read m export m=$m also export m is not working ? the month-variable should be exportet for the use in other scripts, but it is not working like this. What i'm doing wrong? Thanks in advance! IMPe (10 Replies)
Discussion started by: IMPe
10 Replies

4. Shell Programming and Scripting

String == isn't working in [[-test

Hi. I'm new to this forum, my English perhaps is not so good, but here is my question: In bash you can use ] for tests, and how I understand it the variable names should be expanded automatically. So this should give "yes": xx=hello $ ] && echo yes || echo no no # not giving "yes" These two... (2 Replies)
Discussion started by: 244an
2 Replies

5. Shell Programming and Scripting

crontab - runninf a java script just isn't quite working...

hi gurus. I have a little script that runs java from a certain directory. This script runs fine when run manually but when I try to schedule it, it fails to find the script. little_script.sh.. /<directory of java>/java -classpath... (3 Replies)
Discussion started by: MrCarter
3 Replies

6. Shell Programming and Scripting

awk isn't working

awk 'BEGIN{print '1.2449'**0.5}' awk: line 1: syntax error at or near * can someone help me troubleshoot the above command? i'm trying to do the square root of 1.2449. this command works on Red Hat, but for some reasonn isn't working on kubuntu (latest version). shell is bash. i... (3 Replies)
Discussion started by: SkySmart
3 Replies

7. Shell Programming and Scripting

a very basic sed one-liner...that isn't working :-(

Greetings all. :) I would like to use sed to join all non-blank lines together in a particular file. I was thinking I could do this by simply replacing the terminating, new-line character on every line which is not blank, but I must be missing something in my sed line: $ sed... (3 Replies)
Discussion started by: SteveB-in-LV
3 Replies

8. UNIX for Dummies Questions & Answers

Why isn't this working? tsch-doit file

#! /usr/tsch foreach f (`cat contacts.list`) awk '{printf ($2 in a) ? ","$5 : (NR>1) ? RS $2 FS $5 : $2 FS $5; a} END{print e}' $f > $f_inter.map end My file: cat contacts.list is just a list of files. I get this error: doit_contacts2intermap.sh: Command not found. Thanks! (1 Reply)
Discussion started by: lost
1 Replies

9. UNIX for Dummies Questions & Answers

Which Sendmail version ? and why -d isn't working

Hi, I am trying to figure out which version I am running of sendmail, but I am buffed. This is what I get sendmail -d0.1 -bt < /dev/null sendmail: illegal option -- d Telneting to my host: ~]$ telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is... (1 Reply)
Discussion started by: saariko
1 Replies

10. Solaris

grep -r isn't working

Hi, I was trying to use this particular option of grep grep -r 'Search_pattern' * This command should ideally search all the occurrences of Search_pattern recursively within a directory & print it on shell prompt. But this command is not doing what is expected. It just displays nothin! ... (8 Replies)
Discussion started by: harishmitty
8 Replies

Featured Tech Videos