This discussion is archived
7 Replies Latest reply: Dec 4, 2013 10:16 AM by kazyskiyn0w RSS

shell to remove files of two days ago or later

kazyskiyn0w Explorer
Currently Being Moderated

Hello experts and gurus,

 

can someone tell me where can I find a documentation or web page that shows an easy and simple way to remove old files by date (for example, remove files older than 2 days: for example, if today is monday, I need to remove files from saturday or later). I researched but didn't find it. I am not shell script expert, but I'm studying linux.

 

Many thanks,

  • 1. Re: shell to remove files of two days ago or later
    kazyskiyn0w Explorer
    Currently Being Moderated

    I mean, I researched but didn't find anything "reliable" so  I decided to ask you guys.

     

    Any information would be greatly appreciated ....

     

    Thanks

  • 2. Re: shell to remove files of two days ago or later
    Zack.L Explorer
    Currently Being Moderated

    Hi kaz,

     

    I used the below code ( help from forums ) to check remove files older than 3 days and output to cleanup.log listing deleted files if any:

     

     

    #!/bin/sh

    find /my_directory -type f -mtime +2 -exec rm -fvr {} \; > /tmp/cleanup.log

    exit

     

     

    You can use Linux man command to understand more about various options above.

     

    HTH

    Zack

     

     

     

  • 3. Re: shell to remove files of two days ago or later
    Dude! Guru
    Currently Being Moderated

    There was actually no need to limit the search results to regular files and then remove directories and their contents recursively. The find command has a few action commands built-in, which does not need to pass results to an external program for processing. Please see the following:

     

     

    Terminal - Example

    # su - dude
    $ touch testFile1 testfile2 TESTfile3

     

    $ find ./ -type f -iname 'testfile*' -ls -delete
    261742    0 -rw-rw-r--   1 dude     dude            0 Nov 28 08:41 ./testfile2
    261747    0 -rw-rw-r--   1 dude     dude            0 Nov 28 08:41 ./TESTfile3
    261689    0 -rw-rw-r--   1 dude     dude            0 Nov 28 08:41 ./testFile1

     

    $ find ./ -type f -name "testfile*" -ls -delete
    $

     

     

    Also note the effect of single and double quoting the find name argument and command line globbing, which many Linux/Unix system administrators with a MS Windows background may not be aware off. The shell resolves wildcards and variables rather than passing the argument to the find command unless it is single quoted:

     

    Terminal - Example

    $ touch 'test$File1' 'test$file2' 'TEST$file3'
    $ mkdir test

     

     

     

     

    $ find ./ -type f -iname 'test$file*' -ls
    261689    0 -rw-rw-r--   1 dude     dude            0 Nov 28 08:53 ./test$File1
    261747    0 -rw-rw-r--   1 dude     dude            0 Nov 28 08:53 ./TEST$file3
    261742    0 -rw-rw-r--   1 dude     dude            0 Nov 28 08:53 ./test$file2


    $ find ./ -type f -iname test$file* -ls
    find: paths must precede expression: test$File1

     

    $ strace find ./ -type f -iname test$file* -ls
    execve("/bin/find", ["find", "./", "-type", "f", "-iname", "test", "test$File1", "test$file2", "-ls"]

    $ strace find ./ -type f -iname 'test$file*' -ls
    execve("/bin/find", ["find", "./", "-type", "f", "-iname", "test$file*", "-ls"]

     

    $ strace find ./ -type f -iname "test$file*" -ls
    execve("/bin/find", ["find", "./", "-type", "f", "-iname", "test*", "-ls"]

     


  • 4. Re: shell to remove files of two days ago or later
    Zack.L Explorer
    Currently Being Moderated

    Hi dude,

     

    Thanks as always for very informative and instructive post.

     

    Regards

    Zack

  • 5. Re: shell to remove files of two days ago or later
    kazyskiyn0w Explorer
    Currently Being Moderated

    Thanks Zack and Dude for the answers.

  • 6. Re: shell to remove files of two days ago or later
    kazyskiyn0w Explorer
    Currently Being Moderated

    Hello,

    If I use the parameter  -mtime +2 does it mean it'll find the files older than 2 days?

     

    And what if it is negative (-2)

     

    Thanks

  • 7. Re: shell to remove files of two days ago or later
    kazyskiyn0w Explorer
    Currently Being Moderated

    In the command

    find ./ -type f -name "testfile*" -ls -delete

     

    how can I delete files older than 2 days?

     

    Thanks,

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points