Removing files from a particular month


 
Thread Tools Search this Thread
Operating Systems HP-UX Removing files from a particular month
# 1  
Old 05-02-2012
Removing files from a particular month

Hi All

I am trying to remove files from february, only using the following commands:

Code:
find . -mtime 70 -exec rm {} \;

, but I dont seem to get them deleted.

But I am confused, now, because I have been told to use
Code:
-atime

, like

Code:
find . -atime 75 -exec rm {} \;

Please can you help!

FR
# 2  
Old 05-02-2012
Quote:
I am trying to remove files from february
This sentence is ambiguous and I can think of at least four different meanings:
1) Delete every file created since from 1 February 2012 to today (inclusive).
2) Delete every file which was created on or before 1 February 2012
3) Delete every file which was created between 1 February 2012 and 29 February 2012 (inclusive).
4) Delete every file which was created in February in any year.

The syntax you post will not work and it will probably be a much more complicated syntax of find on HP-UX. But let's find out what you want to delete first!

Please carefully describe the range of dates (inclusive) of the files you want to delete. I would suggest that you think in terms of -mtime because -atime is useless for this purpose because accessing the file changes the atime stamp.

Last edited by methyl; 05-02-2012 at 02:51 PM..
# 3  
Old 05-02-2012
removing files from a particular month

Hi

Thank you for your response.

What I really want is to remove files from 1st of february 2012, to 29th of february 2012 ONLY.
Sorry if I mislead you.

FR
# 4  
Old 05-02-2012
From today's date (03 May), this should work:
Code:
find . -type f  -mtime -$(( 3+30+31+29 )) -mtime +$(( 3+30+30 )) -exec ls -lv '{}' \;

Check the output first, confirm the dates before proceeding with delete.



Moderator's Comments:
Mod Comment With two -mtime switches on a find command line, only the second will be taken into account

Last edited by methyl; 05-02-2012 at 05:42 PM.. Reason: Correction on day calculation: my stupid math, had to use $(( 3+30+31+29 )) to get the sum :)
# 5  
Old 05-02-2012
@admin_xor
Not checked the numbers (noted that the above post has been revised) but if we adopt that approach, the syntax should be:
Code:
find . -type f \( -mtime -98 -a -mtime +69 \) -exec ls -lad '{}' \;

However the results from that command depend on exactly what time-of-day and on what date the command is run.


The quick and dirty approach is to use the month name from ls -la but this is frought with problems if there are old files (relevant or not) in any directory. With Linux the stat command is useful for this sort of script.


My approach which is pretty much 100% accurate on most unix Operating Systems.
Code:
touch -t 201202010000 /tmp/start_date  # File dated First day of February
touch -t 201203010000 /tmp/end_date    # File dated First day of March
find . -type f \( -newer /tmp/start_date -a ! -newer /tmp/end_date \) -exec ls -lad {} \;

Scripts to automate this sort of process can get a bit long when you need to calculate the restrospective dates but they are essentially easy to write.

Last edited by methyl; 05-02-2012 at 05:46 PM.. Reason: The -v switch to ls not always available. Remove quotes from {} ... though I still need real examples of this syntax.
These 2 Users Gave Thanks to methyl For This Post:
# 6  
Old 05-02-2012
Awesome!! Smilie

Regarding the syntax, for "and" operation, I usually do not bother about the -a operator. That syntax I use for "or" operation with -o. Here's what GNU find's man page has to say about it:

Code:
The  expression  is  made up of options (which affect overall operation
       rather than the processing of a specific file, and always return true),
       tests  (which  return  a  true or false value), and actions (which have
       side effects and return a true or false value), all separated by opera-
       tors.  -and is assumed where the operator is omitted.

And here's the proof:

Code:
# ls -la /tmp/file*
-rw-r--r--. 1 root root 0 Feb  1 08:33 /tmp/file1
-rw-r--r--. 1 root root 0 Feb 28 08:33 /tmp/file2
-rw-r--r--. 1 root root 0 Feb 14 08:33 /tmp/file3
-rw-r--r--. 1 root root 0 Jan 14 08:33 /tmp/file4

Code:
# find /tmp -mtime -$(( 3+30+31+29 )) -mtime +$(( 3+30+30 )) -exec ls -lv '{}>
-rw-r--r--. 1 root root 0 Feb 28 08:33 /tmp/file2
-rw-r--r--. 1 root root 0 Feb  1 08:33 /tmp/file1
-rw-r--r--. 1 root root 0 Feb 14 08:33 /tmp/file3

But, again, HP-UX find may differ. This is tested with GNU find Smilie

Thanks Methyl.

Last edited by admin_xor; 05-02-2012 at 05:49 PM..
# 7  
Old 05-02-2012
@admin_xor
The GNU find is indeed quite different from the find shipped with HP-UX (and other standard unix systems). The implicit "and" is a welcome addition to the find command.
Still beware of the time-of-day with either version using the syntax posted (-mtime is relative to the current date-and-time). The GNU find has the addition of start-of-day and end-of-day parameters which would be so useful for this question ... but we have to do it the old way on HP-UX.

Last edited by methyl; 05-02-2012 at 06:37 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Get last month files

Hi All, How to get last month files. Ex : 1st Jan i have to get Dec 31 days files and on Feb 1st i have to get Jan 31 days files and on Mar 1st i have to get Feb 28 days files. Below are the example files with date and timestamp. aaa.txt.timestamp aaa.txt.timestamp aaa.txt.timestamp Please... (7 Replies)
Discussion started by: kiranparsha
7 Replies

2. Shell Programming and Scripting

Need last month files after 10th of every month

Hi, I need all file names in a folder which has date >= 10th of last month, Example : files in folder AUTO_F1_20140610.TXT BUTO_F1_20140616.TXT CUTO_F1_20140603.TXT FA_AUTO_06012014.TXT LA_AUTO_06112014.TXT MA_AUTO_06212014.TXT ZA_AUTO_06232014.TXT Output: AUTO_F1_20140610.TXT... (9 Replies)
Discussion started by: nani1984
9 Replies

3. Shell Programming and Scripting

How to add decimal month to some month in sql, php, perl, bash, sh?

Hello, i`m looking for some way to add to some date an partial number of months, for example to 2015y 02m 27d + 2,54m i need to write this script in php or bash or sh or mysql or perl in normal time o unix time i`m asking or there are any simple way to add partial number of month to some... (14 Replies)
Discussion started by: bacarrdy
14 Replies

4. UNIX for Advanced & Expert Users

Find all files other than first two files dates & last file date for month

Hi All, I need to find all files other than first two files dates & last file date for month and month/year wise list. lets say there are following files in directory Mar 19 2012 c.txt Mar 19 2012 cc.txt Mar 21 2012 d.txt Mar 22 2012 f.txt Mar 24 2012 h.txt Mar 25 2012 w.txt Feb 12... (16 Replies)
Discussion started by: Makarand Dodmis
16 Replies

5. UNIX for Advanced & Expert Users

How to find last two files for a month?

Hi All, I need to find last two files for the month. lets say there are following files in directory -rwxr-xr-x 1 user userg 1596 Mar 19 15:43 c.txt -rwxr-xr-x 1 user userg 1596 Mar 21 15:43 d.txt -rwxr-xr-x 1 user userg 1596 Mar 22 15:43 f.txt -rwxr-xr-x 1... (14 Replies)
Discussion started by: Makarand Dodmis
14 Replies

6. Shell Programming and Scripting

Script to counting a specific word in a logfile on each day of this month, last month etc

Hello All, I am trying to come up with a shell script to count a specific word in a logfile on each day of this month, last month and the month before. I need to produce this report and email it to customer. Any ideas would be appreciated! (5 Replies)
Discussion started by: pnara2
5 Replies

7. Shell Programming and Scripting

How to delete1 month old files?

Hi, I need to create a script which should delete all the log files which are 1 month old or older than that. For ex: Today's date -- > 09/30/2010 Directory --> /user/work/log/ Files--> log.07182010 created on 07/18/2010 log.08182010 created on 08/18/2010 log.09182010 ... (4 Replies)
Discussion started by: ustechie
4 Replies

8. UNIX for Dummies Questions & Answers

print previous month (current month minus 1) with Solaris date and ksh

Hi folks month=`date +%m`gives current month Howto print previous month (current month minus 1) with Solaris date and ksh (7 Replies)
Discussion started by: slashdotweenie
7 Replies

9. Shell Programming and Scripting

Removing 2 month old files

I am trying to delete 2 month old file with date extension yyyymmdd, How can i get a 2 month old month and year? (16 Replies)
Discussion started by: shehzad_m
16 Replies

10. Shell Programming and Scripting

How to get previous month files

Hi, My task to to delete files which are of previous months. I have files named as follows *CCYYMMDD.xls. on a particular day i have delete previous months files i.e in Dec i have delete all nov files which look like 200511DD.XLS in Jan i have to delete all Dec files 200512DD.xls ... (7 Replies)
Discussion started by: savitha
7 Replies
Login or Register to Ask a Question