To remove files before certain date


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers To remove files before certain date
# 1  
Old 10-23-2008
Question To remove files before certain date

I juz started to pick up unix nott long.
What i am gonna do here is to try and remove some files before a date. (example 1st Oct 2008)
Format of files name: fileA_2008MMDD
I did a ls -lrt to list all the files
Followed by rm 200801**
..
..
..
rm 200809**

Is there a more efficient way to this?

Appreciate for ur help
Thz a million Smilie
# 2  
Old 10-23-2008
you can use the find command with mtime option. it will be specific.
# 3  
Old 10-23-2008
Quote:
Originally Posted by palsevlohit_123
you can use the find command with mtime option. it will be specific.
find "url of directory" -name "*.txt" -mtime -60 -exec rm {} \;

something like that and it should work?

Thks
# 4  
Old 10-23-2008
Definitely the "find" command is it, as palsevlohit_123 already said.

Use either the "-mtime", "-ctime" or "-atime" clause to select based upon modification time, creation time or access time of the files or use the "-newer" clause to compare files with a reference files time stamp.

How to use "find"

"Find" works basically like that: you specifiy a starting directory and "find" will find all files and directories from there on. With additional clauses you can assign an action to every item found that way. Example:

Code:
find /home/myuser -print

This will traverse to search all files and directories in the directory "/home/myuser" and then execute the "-print" clause for every item. "-print" only prints the files name and is the default action, so we wouldn't had to specify it, but its a good example to show the mechanism.

Try the same and replace "-print" with "-ls". This will basically work the same way, but the output format will be different. It is like the output of "ls -ails".

You can now specify additional criteria to exclude or include certain groups of files. Every clause you specify returns a logical value. If the value returned is "TRUE" the file is included, otherwise it is excluded. "-print" and "-ls" return always TRUE, therefore they do nothing to limit the result set, but others do:

Code:
find /home/myuser -type d -print

This will print only the directories, not the filenames. The reason is the "-type" clause, which gets a type of filesystem item (in our case: "d" for "directories") and returns "TRUE" only for these. "Find" will still find all items in the directory, then present each to "-type", which will return "TRUE" for the directories and "FALSE" for all the other things (files, links, devices, etc.). The remaining items (the ones for which "-type" has returned "TRUE") are now being presented to "-print" which will print their names.

You can also combine several exclusion clauses. Example: you want all files, but only the ones with a starting character of "x" in their name. You want the output in the long style:

Code:
find /home/myuser -type f -name "x*" -ls

There is a special clause which allows to do some work on the items found that way: the "-exec" clause. "-exec" gets a complete command like it would be entered on the command line. The filename involved is represented by "{}" in this. find will now execute this commandline substituting the filename for "{}" and use the returncode as the returncode of the clause:

Code:
find /home/myuser -name "x*" -type f -exec echo "This is the file named {}" \;

The reason for the "\;" is that the shell has to know where the "template commandline" stops and the normal commandline resumes, so this is obligatory.

Another example: You want to remove all the leftover "*bak" files from your home directory which your editor leaves when editing a file. Use the following command which you by know sould be able to interpret:

Code:
find /home/myuser -type f -name "*bak" -exec rm -f {} \; -print

Read the man page of "find" to find more phantastic clauses to work with.

One suggestion: i said that "-exec" returns the commands error level as return value (an error level of 0 means "TRUE", everything else "FALSE"). This way you can use also an "-exec" clause to include or exclude arbitrary files, directories or other filesystem items in your set. You can also use the same clause several times. Therefore, if the clauses of "find" are not suited to your problem you can easily contruct your own criteria by giving the file in question to a script, which returns TRUE or FALSE depending on some arbitrary criteria, then use another "-exec" clause to carry out some fancy action on the files selected this way:

Code:
find /some/dir -exec script_returning_TRUE_or_FALSE {} \; -exec some_command {} \;

I hope this helps.

bakunin
# 5  
Old 10-23-2008
Hi,

Thks a lot for help!!
find command is a useful one hah
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Answers to Frequently Asked Questions

Compare date in .txt with system date and remove if it's lesser than system date

I m working on shell scripting and I m stuck where in my .txt file there is column as expiry date and I need to compare that date with system date and need to remove all the rows where expiry date is less than system date and create a new .txt with update. (1 Reply)
Discussion started by: Stuti
1 Replies

2. UNIX for Beginners Questions & Answers

Compare date in .txt with system date and remove if it's lesser than system date

Can someone help me with the code wherein there is a file f1.txt with different column and 34 column have expiry date and I need to get that and compare with system date and if expiry date is <system date remove those rows and other rows should be moved to new file f2.txt . I don't want to delete... (2 Replies)
Discussion started by: Stuti
2 Replies

3. UNIX for Dummies Questions & Answers

Find the count of files by last created date based on the given date range

My unix version is IBM AIX Version 6.1 I tried google my requirement and found the below answer, find . -newermt “2012-06-15 08:13" ! -newermt “2012-06-15 18:20" But newer command is not working in AIX version 6.1 unix I have given my requirement below: Input: atr files: ... (1 Reply)
Discussion started by: yuvaa27
1 Replies

4. Shell Programming and Scripting

Shell script to compare two files of todays date and yesterday's date

hi all, How to compare two files whether they are same are not...? like i had my input files as 20141201_file.txt and 20141130_file2.txt how to compare the above files based on date .. like todays file and yesterdays file...? (4 Replies)
Discussion started by: hemanthsaikumar
4 Replies

5. Shell Programming and Scripting

How to list files that are not first two files date & last file date for every month-year?

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... (2 Replies)
Discussion started by: Makarand Dodmis
2 Replies

6. UNIX for Dummies Questions & Answers

Remove files based on date

Hello team, I have a number of files in a folder which are dated yesterday and today.Can i remove all the files which i created today based on date?? is there any syntax for this ?? (1 Reply)
Discussion started by: kanakaraju
1 Replies

7. Shell Programming and Scripting

Remove files which created date before 10 days on HP-UX

Hi All, Could you please let me know if there is any one can help to create a shell script to remove some files which is the created date for them greate than 10 days (sysdate-10) Please try to email me on email removed Thanks in advance, Murad (1 Reply)
Discussion started by: murad_fayez
1 Replies

8. Shell Programming and Scripting

Sorting Files by date and moving files in date order

I need to build a k shell script that will sort files in a directory where files appear like this "XXXX_2008021213.DAT. I need to sort by date in the filename and then move files by individual date to a working folder. concatenate the files in the working folder then start a process once... (2 Replies)
Discussion started by: rebel64
2 Replies

9. Shell Programming and Scripting

how to remove files with a date

I have files with a date name ( 20060506 20060507 etc..) that i want to remove because it keeps filling up the directory. Can someone please help me with a script to remove those date files. i would like to keep atleast 14 days worth from the current date. I hope i have explained it clearly and... (5 Replies)
Discussion started by: justintime
5 Replies

10. UNIX for Dummies Questions & Answers

Remove files based on date

I am trying to write a shell script that will remove files in a directory based on the date. For instance, remove all files older than yesterday. Any ideas? (4 Replies)
Discussion started by: hshapiro
4 Replies
Login or Register to Ask a Question