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**
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:
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:
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:
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:
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:
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:
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)