UNIX Script to clean files


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers UNIX Script to clean files
# 1  
Old 03-28-2019
UNIX Script to clean files

Hello All,

I need a script that would delete files which are more than "X" number of days old, also if there can be a log file of the deleted files for reference.

I am from windows background hence finding it difficult. Any help is much appreciated

Regards
Wert
# 2  
Old 03-28-2019
Doing it in windows means for most relying on GUI and not knowing there are utilities behind being used, though you have a "powershell" and command line /script option... in Unix you could find some GUI but most people learn to use the commands/utilities and keep GUI for sophisticated tasks...
I suggest you have a look at the man pages of find, start to elaborate your script and show us what you have done, then we can help you out or explain what is needed
If you dont know how to write the script then you should start by its design, and show us a form of pseudocode, we can discuss on, we then will help you put it down in shell script
# 3  
Old 03-28-2019
Since I'm estimating that your knowledge of the unix system is very limited so far, I warn you to just delete any old unused file you can grab. Your request reminds me - at my - long time past windows times, where things had to be cleanup regularly, in order to maintain a roughly usable OS.

One should be familiar what can be files can deleted and what better not to touch. If not and if the deletions are done with root privileges, you can quite quickly render your system unusable.

So my advice: Before the learning of the knowledge how to delete is the learning of the knowledge what to delete.

So if you want help, specify your request with more details:
  • What exactly do you want to achieve?
  • What files do you want to delete?
  • What is your environment(OS, Version)?
# 4  
Old 03-29-2019
First off, welcome to the forum as well as the family of the most powerful OSes there is in the world. You will find that Unix - any Unix, including Linux - is a set of finely tuned tools, just like an orchestra is a set of highly trained musicians. Let the right conductor - you - step up and they will blow the audience away.

Quote:
Originally Posted by wert468
I need a script that would delete files which are more than "X" number of days old
Let us start right here, at your premise. In UNIX every file has not one but several timestamps. There is:

- creation time
- modification time
- access time

and they are all set independently. You open a text editor and write a new file. All three of these times are set. After some time you open the file in a text editor again and change something - only the modification time and the access time (because to change it you need to read it first) is changed. Some time after this you display the files contents - only the access time is updated.

Also notice that many files on a UNIX system are important or even vital even if they are NOT updated regularly. I.e. the configuration file for a web server is being read when the web server starts, so its access time may be 2 months past if it runs for 2 months. You still shouldn't delete it, though, if you want to be able to start the webserver again. (notice that UNIX systems running for months or even years is - unlike Windows systems - rather normal. I have actually customers complain to me if i want to restart their server once a year after some major OS update. "You restarted already last year, why now again?" - no, i do NOT exaggerate here, i heard, word for word, exactly this complaint. In the OS i work with the most - AIX, IBMs UNIX - it is even possible to do OS and kernel updates under load with no interruption of the service. For exactly these situations where customers complain about the necessity reboot once a year or every other year.)

On the other hand, UNIX systems do not have "drives" but only one (uniform treelike) filesystem. So you may identify one or several branches in this tree where you want to start the cleaning operation and leave alone all the others.

In light of this you might want to rethink and restate your goals and we can discuss what might be done then.

I hope this helps.

bakunin
# 5  
Old 03-31-2019
Quote:
Originally Posted by bakunin
In UNIX every file has not one but several timestamps. There is:

- creation time
- modification time
- access time

and they are all set independently.
After having some time think this over i'd like to make some clarifications but, first off, thanks goes RudiC and drl for pointing it out to me that what i wrote was misleading, especially for the beginner. So, here it goes:

As i said, every file has several timestamps which stand for different things. But first, let us clarifiy what a "file" is in UNIX: a file is - obviously - a bunch of data stored on a "filesystem". There are (other than in Windows) different filesystems to choose from but it comes down to basically store the data somewhere in an organised form. But then there is a second aspect of this because we also need "meta data" - data about the data stored this way - to really make use of it. We i.e. need a "filename" by which we can address it. Notice that the files name is NOT part of the file - it is part of the set of descriptive items stored about the file.

So, we have the "file" and we have its "meta data". In UNIX filesystems these meta data are stored in "inodes". Inodes have a structured, record-like format which can (and does) vary across filesystems but within the same filesystem they are uniform. The different timestamps i talked about are located in these inodes.

I will skip (if you are interested - ask explicitly) the intrinsics of the inode (there is a lot - filesystem tuning, links, rights management, ...) and concentrate on the timestamps of a file. Always keep in mind, though, that slight differences might occur across different filesystems. I will mostly forego these differences to give you an overall picture first. You may tell us which filesystem you have so we can add details to this picture in a follow-up:

There are three timestamps which are common throughout all filesystems:
  • Modify - the last time the files data was modified
    This basically covers creation as well as modification. Some filesystems, as i said, have a separate creation time, but - as i learned, thanks to RudiC - most have not. This timestamp is also referred to as "mtime".
  • Access - the last time the file was read
    This is set whenever the files data where accessed. Notice that a command like ls (list directory, the analogon to dir in Windows) will not access the files data, but only its meta data. Every access to the data, though, includes an access to the meta data because even the location - where the data can be found - is part of the meta data. This is also referred to as "atime".
  • Change - the last time meta data of the file was changed
    From what i said it should be obvious by now that the meta data can be changed without changing the data itself. What such an operation might look like, though, is perhaps more difficult to envision, so here is an example: the access rights to the file are also stored in the inode. Therefore, when you change the access rights only the meta data are changed, not the data itself. This will reflect in only this timestamp being changed. This timestamp is also called "ctime".

Thanks again to RudiC and drl for their valuable input in this.

I hope this helps.

bakunin
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to clean 3 days before files, from a directory?

I have a Solaris System. I am using bash shell. I want to prepare a script which can do the below. There are few directories i need to clean. In those directories, I need to delete files which are older than 3 days. 3 days before files need to be deleted. The directories are as follows.... (7 Replies)
Discussion started by: Saidul
7 Replies

2. Shell Programming and Scripting

Clean up UNIX mail box using script

Hi, I would like to clean up by unix mail mail box thru some script command.. I do know how to delete from mail box ... e.g. $ mail ? d* ? quit But I need to clean up thru some command which I can use in my script before sending any email.. Thanks in advance! (1 Reply)
Discussion started by: pareshkp
1 Replies

3. Shell Programming and Scripting

Script to FTP,clean up and email

Hi i need a unix script to do the following tasks. My folder structure is /home/MSTR/test and will have the following folder within it Cache Lookup Source Target 1. On the Source & Target folder i have to take a copy of files older than 5 days and move(FTP) it into local machines C:\Backup... (1 Reply)
Discussion started by: Codesearcher
1 Replies

4. Solaris

to clean unnecessary files and folders

I want to clean used solaris OS and then to give another developer. How can I understand that difference between system file/folder and others. I want to delete apart from the files/folders. I need tools or scripts like disk-cleanup or something like that. #usr>du -s -h * 6.6M 4lib ... (1 Reply)
Discussion started by: getrue
1 Replies

5. Shell Programming and Scripting

noob question - is awk the tool to clean dirty text files?

Hi, nevermind. I think I've found the answer. It appears I was looking for index, match, sub, and gsub. I want to write a shell script that will clean the html out of a bunch of files and format the data for import into excel. Awk seems like a powerful tool, but it seems oriented to... (1 Reply)
Discussion started by: yogert909
1 Replies

6. Shell Programming and Scripting

How to clean this script?

Hello guys, this script partially works but it's still pretty ugly and, moreover, if the month is jan/feb/mar... it doesn't work at all. Could anyone say me how to correct, cut and clean a little bit? #!/usr/bin/ksh egrep -v -e "^\s*#" /file/permission | awk '{ print $1 }' | sort | uniq... (3 Replies)
Discussion started by: gogol_bordello
3 Replies

7. Shell Programming and Scripting

Clean old log files

Hi, I want to remove old log files (more than 7 days log files), rest of the logs should be present on my Linux box. could some one please give me any thoughts. Thanks. (3 Replies)
Discussion started by: marmam
3 Replies

8. Shell Programming and Scripting

Space Clean Up Activity In Unix

Hi I am trying to develop a script so that whenever used % reaches 90% it will send an alert mail. Following is the script whic I am tryiing to implement but it show some error. code: #! /bin/ksh df -v | grep -i "/opt" | awk '{print $6}' > space if ] then echo "ALERT YOUR SPACE IS TOO... (6 Replies)
Discussion started by: pankajkrmishra
6 Replies

9. OS X (Apple)

Startup script to clean out trash can

I need to know how I would be able to clean out the trash can of a single "dumb" user every time the MAC is turned on. Back ground. OS 10.3x G3 Mac Two users configured... 1) Root or Admin (superuser) 2) student (Simple no access to anything but shared folder for files etc.) The problem... (4 Replies)
Discussion started by: Andrek
4 Replies

10. Shell Programming and Scripting

clean up script

I have a script which would monitor a given directory and delete any files which are older than 10 days. I was going to set the 10 crob jobs to perform this operation for 10 different directories (some are actually sub-directories), but my boss doesn't like that idea, so I need to do that in one... (1 Reply)
Discussion started by: mpang_
1 Replies
Login or Register to Ask a Question