Sponsored Content
Full Discussion: Ls -l and rm
Top Forums UNIX for Beginners Questions & Answers Ls -l and rm Post 303038520 by Neo on Thursday 5th of September 2019 05:58:22 AM
Old 09-05-2019
You can use find with the -exec flag for this.

For example in Linux:

Code:
find /path/to/files* -mtime +30 -exec rm {} \;

Note that there must be spaces between rm, {} and \;

More Explanation:

The first argument is the path to the files you want to delete. This can be a path, a directory, or a wildcard as in the example above. I would recommend using the full path, and make sure that you run the command without the exec rm to make sure you are getting the right results.


The second argument, -mtime, and this switch is used to specify the number of days old that the file is. If you enter +30, it will find files older than 30 days.

The third argument, -exec, allows you to pass in a command such as rm. The {} \; at the end is required at the end the of the command.


NOTE:

Do not run this without testing it first... for example. always run first and look at the output, for example:

Code:
find /path/to/files* -mtime +30  > /tmp/testing_123.txt


After you are happy it is working as you wish, then you can run it.. but honestly, here is what I do:

Code:
mkdir /tmp/files_to_delete
find /path/to/files* -mtime +30 -exec mv {} /tmp/files_to_delete \;

Better to move first and delete later!!! ALWAYS

Get in the very good habit of moving files before you delete them, especially using scripts where one fat finger mistake can ruin your day!

Last edited by rbatte1; 09-05-2019 at 12:36 PM..
 
TMPWATCH(8)						   System Administrator's Manual					       TMPWATCH(8)

NAME
tmpwatch - removes files which haven't been accessed for a period of time SYNOPSIS
tmpwatch [-u|-m|-c] [-MUadfqstvx] [--verbose] [--force] [--all] [--nodirs] [--nosymlinks] [--test] [--fuser] [--quiet] [--atime|--mtime|--ctime] [--dirmtime] [--exclude path] [--exclude-user user] time dirs DESCRIPTION
tmpwatch recursively removes files which haven't been accessed for a given time. Normally, it's used to clean up directories which are used for temporary holding space such as /tmp. When changing directories, tmpwatch is very sensitive to possible race conditions and will exit with an error if one is detected. It does not follow symbolic links in the directories it's cleaning (even if a symbolic link is given as its argument), will not switch filesystems, skips lost+found directories owned by the root user, and only removes empty directories, regular files, and symbolic links. By default, tmpwatch dates files by their atime (access time), not their mtime (modification time). If files aren't being removed when ls -l implies they should be, use ls -u to examine their atime to see if that explains the problem. If the --atime, --ctime or --mtime options are used in combination, the decision about deleting a file will be based on the maximum of these times. The --dirmtime option implies ignoring atime of directories, even if the --atime option is used. The time parameter defines the threshold for removing files. If the file has not been accessed for time, the file is removed. The time argument is a number with an optional single-character suffix specifying the units: h for hours, d for days. If no suffix is specified, time is in hours. Following this, one or more directories may be given for tmpwatch to clean up. OPTIONS
-u, --atime Make the decision about deleting a file based on the file's atime (access time). This is the default. Note that the periodic updatedb file system scans keep the atime of directories recent. -m, --mtime Make the decision about deleting a file based on the file's mtime (modification time) instead of the atime. -c, --ctime Make the decision about deleting a file based on the file's ctime (inode change time) instead of the atime; for directories, make the decision based on the mtime. -M, --dirmtime Make the decision about deleting a directory based on the directory's mtime (modification time) instead of the atime; completely ignore atime for directories. -a, --all Remove all file types, not just regular files, symbolic links and directories. -d, --nodirs Do not attempt to remove directories, even if they are empty. -f, --force Remove files even if root doesn't have write access (akin to rm -f). -l, --nosymlinks Do not attempt to remove symbolic links. -q, --quiet Report only fatal errors. -s, --fuser Attempt to use the "fuser" command to see if a file is already open before removing it. Not enabled by default. Does help in some circumstances, but not all. Dependent on fuser being installed in /sbin. Not supported on HP-UX or Solaris. -t, --test Don't remove files, but go through the motions of removing them. This implies -v. -U, --exclude-user=user Don't remove files owned by user, which can be an user name or numeric user ID. -v, --verbose Print a verbose display. Two levels of verboseness are available -- use this option twice to get the most verbose output. -x, --exclude=path Skip path; if path is a directory, all files contained in it are skipped too. If path does not exist, it must be an absolute path that contains no symbolic links. SEE ALSO
cron(1), ls(1), rm(1), fuser(1) WARNINGS
GNU-style long options are not supported on HP-UX. AUTHORS
Erik Troan <ewt@redhat.com> Preston Brown <pbrown@redhat.com> Nalin Dahyabhai <nalin@redhat.com> Miloslav Trmac <mitr@redhat.com> 4th Berkeley Distribution Fri Dec 14 2007 TMPWATCH(8)
All times are GMT -4. The time now is 06:29 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy