LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   rm by date (https://www.linuxquestions.org/questions/programming-9/rm-by-date-664415/)

Mr. C. 08-26-2008 01:54 AM

A couple of changes were required to matthewg42's code. The idea was correct, just a minor and/or mixup, and should have used modification time instead of status change time:

Ok, let's generate the test files, and set the modification dates:

Code:

$ for month in june july august ; do
  for day in {1..30} ; do
      touch -t $(date -d "$month $day" +%y%m%d1200) $(date -d "$month $day" +%y-%m-%d-%A);
  done;
done
$ ll
total 0B
-rw-r--r--  1 mrc  mrc    0B Jun  1 12:00 08-06-01-Sunday
-rw-r--r--  1 mrc  mrc    0B Jun  2 12:00 08-06-02-Monday
-rw-r--r--  1 mrc  mrc    0B Jun  3 12:00 08-06-03-Tuesday
-rw-r--r--  1 mrc  mrc    0B Jun  4 12:00 08-06-04-Wednesday
-rw-r--r--  1 mrc  mrc    0B Jun  5 12:00 08-06-05-Thursday
-rw-r--r--  1 mrc  mrc    0B Jun  6 12:00 08-06-06-Friday
-rw-r--r--  1 mrc  mrc    0B Jun  7 12:00 08-06-07-Saturday
-rw-r--r--  1 mrc  mrc    0B Jun  8 12:00 08-06-08-Sunday
-rw-r--r--  1 mrc  mrc    0B Jun  9 12:00 08-06-09-Monday
-rw-r--r--  1 mrc  mrc    0B Jun 10 12:00 08-06-10-Tuesday
-rw-r--r--  1 mrc  mrc    0B Jun 11 12:00 08-06-11-Wednesday
-rw-r--r--  1 mrc  mrc    0B Jun 12 12:00 08-06-12-Thursday
-rw-r--r--  1 mrc  mrc    0B Jun 13 12:00 08-06-13-Friday
-rw-r--r--  1 mrc  mrc    0B Jun 14 12:00 08-06-14-Saturday
-rw-r--r--  1 mrc  mrc    0B Jun 15 12:00 08-06-15-Sunday
-rw-r--r--  1 mrc  mrc    0B Jun 16 12:00 08-06-16-Monday
-rw-r--r--  1 mrc  mrc    0B Jun 17 12:00 08-06-17-Tuesday
-rw-r--r--  1 mrc  mrc    0B Jun 18 12:00 08-06-18-Wednesday
-rw-r--r--  1 mrc  mrc    0B Jun 19 12:00 08-06-19-Thursday
-rw-r--r--  1 mrc  mrc    0B Jun 20 12:00 08-06-20-Friday
-rw-r--r--  1 mrc  mrc    0B Jun 21 12:00 08-06-21-Saturday
-rw-r--r--  1 mrc  mrc    0B Jun 22 12:00 08-06-22-Sunday
-rw-r--r--  1 mrc  mrc    0B Jun 23 12:00 08-06-23-Monday
-rw-r--r--  1 mrc  mrc    0B Jun 24 12:00 08-06-24-Tuesday
-rw-r--r--  1 mrc  mrc    0B Jun 25 12:00 08-06-25-Wednesday
-rw-r--r--  1 mrc  mrc    0B Jun 26 12:00 08-06-26-Thursday
-rw-r--r--  1 mrc  mrc    0B Jun 27 12:00 08-06-27-Friday
-rw-r--r--  1 mrc  mrc    0B Jun 28 12:00 08-06-28-Saturday
-rw-r--r--  1 mrc  mrc    0B Jun 29 12:00 08-06-29-Sunday
-rw-r--r--  1 mrc  mrc    0B Jun 30 12:00 08-06-30-Monday
-rw-r--r--  1 mrc  mrc    0B Jul  1 12:00 08-07-01-Tuesday
-rw-r--r--  1 mrc  mrc    0B Jul  2 12:00 08-07-02-Wednesday
-rw-r--r--  1 mrc  mrc    0B Jul  3 12:00 08-07-03-Thursday
-rw-r--r--  1 mrc  mrc    0B Jul  4 12:00 08-07-04-Friday
-rw-r--r--  1 mrc  mrc    0B Jul  5 12:00 08-07-05-Saturday
-rw-r--r--  1 mrc  mrc    0B Jul  6 12:00 08-07-06-Sunday
-rw-r--r--  1 mrc  mrc    0B Jul  7 12:00 08-07-07-Monday
-rw-r--r--  1 mrc  mrc    0B Jul  8 12:00 08-07-08-Tuesday
-rw-r--r--  1 mrc  mrc    0B Jul  9 12:00 08-07-09-Wednesday
-rw-r--r--  1 mrc  mrc    0B Jul 10 12:00 08-07-10-Thursday
-rw-r--r--  1 mrc  mrc    0B Jul 11 12:00 08-07-11-Friday
-rw-r--r--  1 mrc  mrc    0B Jul 12 12:00 08-07-12-Saturday
-rw-r--r--  1 mrc  mrc    0B Jul 13 12:00 08-07-13-Sunday
-rw-r--r--  1 mrc  mrc    0B Jul 14 12:00 08-07-14-Monday
-rw-r--r--  1 mrc  mrc    0B Jul 15 12:00 08-07-15-Tuesday
-rw-r--r--  1 mrc  mrc    0B Jul 16 12:00 08-07-16-Wednesday
-rw-r--r--  1 mrc  mrc    0B Jul 17 12:00 08-07-17-Thursday
-rw-r--r--  1 mrc  mrc    0B Jul 18 12:00 08-07-18-Friday
-rw-r--r--  1 mrc  mrc    0B Jul 19 12:00 08-07-19-Saturday
-rw-r--r--  1 mrc  mrc    0B Jul 20 12:00 08-07-20-Sunday
-rw-r--r--  1 mrc  mrc    0B Jul 21 12:00 08-07-21-Monday
-rw-r--r--  1 mrc  mrc    0B Jul 22 12:00 08-07-22-Tuesday
-rw-r--r--  1 mrc  mrc    0B Jul 23 12:00 08-07-23-Wednesday
-rw-r--r--  1 mrc  mrc    0B Jul 24 12:00 08-07-24-Thursday
-rw-r--r--  1 mrc  mrc    0B Jul 25 12:00 08-07-25-Friday
-rw-r--r--  1 mrc  mrc    0B Jul 26 12:00 08-07-26-Saturday
-rw-r--r--  1 mrc  mrc    0B Jul 27 12:00 08-07-27-Sunday
-rw-r--r--  1 mrc  mrc    0B Jul 28 12:00 08-07-28-Monday
-rw-r--r--  1 mrc  mrc    0B Jul 29 12:00 08-07-29-Tuesday
-rw-r--r--  1 mrc  mrc    0B Jul 30 12:00 08-07-30-Wednesday
-rw-r--r--  1 mrc  mrc    0B Aug  1 12:00 08-08-01-Friday
-rw-r--r--  1 mrc  mrc    0B Aug  2 12:00 08-08-02-Saturday
-rw-r--r--  1 mrc  mrc    0B Aug  3 12:00 08-08-03-Sunday
-rw-r--r--  1 mrc  mrc    0B Aug  4 12:00 08-08-04-Monday
-rw-r--r--  1 mrc  mrc    0B Aug  5 12:00 08-08-05-Tuesday
-rw-r--r--  1 mrc  mrc    0B Aug  6 12:00 08-08-06-Wednesday
-rw-r--r--  1 mrc  mrc    0B Aug  7 12:00 08-08-07-Thursday
-rw-r--r--  1 mrc  mrc    0B Aug  8 12:00 08-08-08-Friday
-rw-r--r--  1 mrc  mrc    0B Aug  9 12:00 08-08-09-Saturday
-rw-r--r--  1 mrc  mrc    0B Aug 10 12:00 08-08-10-Sunday
-rw-r--r--  1 mrc  mrc    0B Aug 11 12:00 08-08-11-Monday
-rw-r--r--  1 mrc  mrc    0B Aug 12 12:00 08-08-12-Tuesday
-rw-r--r--  1 mrc  mrc    0B Aug 13 12:00 08-08-13-Wednesday
-rw-r--r--  1 mrc  mrc    0B Aug 14 12:00 08-08-14-Thursday
-rw-r--r--  1 mrc  mrc    0B Aug 15 12:00 08-08-15-Friday
-rw-r--r--  1 mrc  mrc    0B Aug 16 12:00 08-08-16-Saturday
-rw-r--r--  1 mrc  mrc    0B Aug 17 12:00 08-08-17-Sunday
-rw-r--r--  1 mrc  mrc    0B Aug 18 12:00 08-08-18-Monday
-rw-r--r--  1 mrc  mrc    0B Aug 19 12:00 08-08-19-Tuesday
-rw-r--r--  1 mrc  mrc    0B Aug 20 12:00 08-08-20-Wednesday
-rw-r--r--  1 mrc  mrc    0B Aug 21 12:00 08-08-21-Thursday
-rw-r--r--  1 mrc  mrc    0B Aug 22 12:00 08-08-22-Friday
-rw-r--r--  1 mrc  mrc    0B Aug 23 12:00 08-08-23-Saturday
-rw-r--r--  1 mrc  mrc    0B Aug 24 12:00 08-08-24-Sunday
-rw-r--r--  1 mrc  mrc    0B Aug 25 12:00 08-08-25-Monday
-rw-r--r--  1 mrc  mrc    0B Aug 26 12:00 08-08-26-Tuesday
-rw-r--r--  1 mrc  mrc    0B Aug 27 12:00 08-08-27-Wednesday
-rw-r--r--  1 mrc  mrc    0B Aug 28 12:00 08-08-28-Thursday
-rw-r--r--  1 mrc  mrc    0B Aug 29 12:00 08-08-29-Friday
-rw-r--r--  1 mrc  mrc    0B Aug 30 12:00 08-08-30-Saturday


Now, let's find the correct range of files to delete:
Code:

$ find . -type f \( -mtime +14 -o -mtime +60 \) -printf "%Tw %p\n"
0 ./08-06-01-Sunday
1 ./08-06-02-Monday
2 ./08-06-03-Tuesday
3 ./08-06-04-Wednesday
4 ./08-06-05-Thursday
5 ./08-06-06-Friday
6 ./08-06-07-Saturday
0 ./08-06-08-Sunday
1 ./08-06-09-Monday
2 ./08-06-10-Tuesday
3 ./08-06-11-Wednesday
4 ./08-06-12-Thursday
5 ./08-06-13-Friday
6 ./08-06-14-Saturday
0 ./08-06-15-Sunday
1 ./08-06-16-Monday
2 ./08-06-17-Tuesday
3 ./08-06-18-Wednesday
4 ./08-06-19-Thursday
5 ./08-06-20-Friday
6 ./08-06-21-Saturday
0 ./08-06-22-Sunday
1 ./08-06-23-Monday
2 ./08-06-24-Tuesday
3 ./08-06-25-Wednesday
4 ./08-06-26-Thursday
5 ./08-06-27-Friday
6 ./08-06-28-Saturday
0 ./08-06-29-Sunday
1 ./08-06-30-Monday
2 ./08-07-01-Tuesday
3 ./08-07-02-Wednesday
4 ./08-07-03-Thursday
5 ./08-07-04-Friday
6 ./08-07-05-Saturday
0 ./08-07-06-Sunday
1 ./08-07-07-Monday
2 ./08-07-08-Tuesday
3 ./08-07-09-Wednesday
4 ./08-07-10-Thursday
5 ./08-07-11-Friday
6 ./08-07-12-Saturday
0 ./08-07-13-Sunday
1 ./08-07-14-Monday
2 ./08-07-15-Tuesday
3 ./08-07-16-Wednesday
4 ./08-07-17-Thursday
5 ./08-07-18-Friday
6 ./08-07-19-Saturday
0 ./08-07-20-Sunday
1 ./08-07-21-Monday
2 ./08-07-22-Tuesday
3 ./08-07-23-Wednesday
4 ./08-07-24-Thursday
5 ./08-07-25-Friday
6 ./08-07-26-Saturday
0 ./08-07-27-Sunday
1 ./08-07-28-Monday
2 ./08-07-29-Tuesday
3 ./08-07-30-Wednesday
5 ./08-08-01-Friday
6 ./08-08-02-Saturday
0 ./08-08-03-Sunday
1 ./08-08-04-Monday
2 ./08-08-05-Tuesday
3 ./08-08-06-Wednesday
4 ./08-08-07-Thursday
5 ./08-08-08-Friday
6 ./08-08-09-Saturday
0 ./08-08-10-Sunday

Now, let's exclude Sundays, and delete the remainding files:
Code:

$ find . -type f \( -mtime +14 -o -mtime +60 \) -printf "%Tw %p\n" | \
  grep -v '^0' | cut -c3- | xargs rm -f
$ ll
total 0B
-rw-r--r--  1 mrc  mrc    0B Jun  1 12:00 08-06-01-Sunday
-rw-r--r--  1 mrc  mrc    0B Jun  8 12:00 08-06-08-Sunday
-rw-r--r--  1 mrc  mrc    0B Jun 15 12:00 08-06-15-Sunday
-rw-r--r--  1 mrc  mrc    0B Jun 22 12:00 08-06-22-Sunday
-rw-r--r--  1 mrc  mrc    0B Jun 29 12:00 08-06-29-Sunday
-rw-r--r--  1 mrc  mrc    0B Jul  6 12:00 08-07-06-Sunday
-rw-r--r--  1 mrc  mrc    0B Jul 13 12:00 08-07-13-Sunday
-rw-r--r--  1 mrc  mrc    0B Jul 20 12:00 08-07-20-Sunday
-rw-r--r--  1 mrc  mrc    0B Jul 27 12:00 08-07-27-Sunday
-rw-r--r--  1 mrc  mrc    0B Aug  3 12:00 08-08-03-Sunday
-rw-r--r--  1 mrc  mrc    0B Aug 10 12:00 08-08-10-Sunday
-rw-r--r--  1 mrc  mrc    0B Aug 11 12:00 08-08-11-Monday
-rw-r--r--  1 mrc  mrc    0B Aug 12 12:00 08-08-12-Tuesday
-rw-r--r--  1 mrc  mrc    0B Aug 13 12:00 08-08-13-Wednesday
-rw-r--r--  1 mrc  mrc    0B Aug 14 12:00 08-08-14-Thursday
-rw-r--r--  1 mrc  mrc    0B Aug 15 12:00 08-08-15-Friday
-rw-r--r--  1 mrc  mrc    0B Aug 16 12:00 08-08-16-Saturday
-rw-r--r--  1 mrc  mrc    0B Aug 17 12:00 08-08-17-Sunday
-rw-r--r--  1 mrc  mrc    0B Aug 18 12:00 08-08-18-Monday
-rw-r--r--  1 mrc  mrc    0B Aug 19 12:00 08-08-19-Tuesday
-rw-r--r--  1 mrc  mrc    0B Aug 20 12:00 08-08-20-Wednesday
-rw-r--r--  1 mrc  mrc    0B Aug 21 12:00 08-08-21-Thursday
-rw-r--r--  1 mrc  mrc    0B Aug 22 12:00 08-08-22-Friday
-rw-r--r--  1 mrc  mrc    0B Aug 23 12:00 08-08-23-Saturday
-rw-r--r--  1 mrc  mrc    0B Aug 24 12:00 08-08-24-Sunday
-rw-r--r--  1 mrc  mrc    0B Aug 25 12:00 08-08-25-Monday
-rw-r--r--  1 mrc  mrc    0B Aug 26 12:00 08-08-26-Tuesday
-rw-r--r--  1 mrc  mrc    0B Aug 27 12:00 08-08-27-Wednesday
-rw-r--r--  1 mrc  mrc    0B Aug 28 12:00 08-08-28-Thursday
-rw-r--r--  1 mrc  mrc    0B Aug 29 12:00 08-08-29-Friday
-rw-r--r--  1 mrc  mrc    0B Aug 30 12:00 08-08-30-Saturday


investmentbnker75 08-26-2008 07:52 AM

Perfect! Thanks a million Mr.C, I created the test env you listed in your post and ran it and it ran perfectly! I also then ran it in the test env i created, just to double check and it was perfect again. If you can, will you give a break down of your final find command that did the actual delete and how it determined what days were what and how removed exactly what was requested?

I could use it to understand Linux better and to write my own script next time. If not, thank you for your time.

Also, thanks to Matthew and rab for trying to help me out with this! Hopefully Mr.C post helped you too!


All times are GMT -5. The time now is 04:50 AM.