45

I want to find files which are greater than 1 GB and older than 6 months in entire server. How to write a command for this?

2 Answers 2

68

Use find:

find /path -mtime +180 -size +1G

-mtime means search for modification times that are greater than 180 days (+180). And the -size parameter searches for files greater than 1GB.

7
  • 2
    Note that in the find implementations where that G suffix is supported, it means GiB (1073741824 bytes), not GB (1000000000). Portably, you'd use find /path -mtime +180 -size +1073741824c Commented May 13, 2015 at 12:11
  • 1
    if you want to avoid seeing errors between the list of files like these: find: a.txt :Permission denied I suggest adding this 2>/dev/null inspired from this comment: unix.stackexchange.com/questions/42841/…
    – gmansour
    Commented Feb 10, 2018 at 3:24
  • 1
    You can also pipe the results into xargs ls -lhS to sort them by size: find /path -mtime +180 -size +1G | xargs ls -lhS
    – user553965
    Commented Jan 29, 2019 at 19:46
  • 1
    @user553965 Your command won't work. What is actually needed to sort by size is: find / -size +1G -mtime +180 -print0 2>/dev/null | xargs -0 ls -lhS. Newbies note: The redirection of 2>/dev/null just gets rid of the permission denied errors which will inevitably appear when searching from root. To sort by last modified date use ls -lht instead and adding r to the ls commands, e.g. ls -lhSr, will reverse the results (smallest to largest / oldest to newest).
    – mattst
    Commented Oct 25, 2019 at 15:21
  • How do you also make it print out the human-readable size of each thing found? Commented Aug 26, 2021 at 3:01
12

find / -size +1G -mtime +180 -type f -print

Here's the explanation of the command option by option: Starting from the root directory, it finds all files bigger than 1 Gb, modified more than 180 days ago, that are of type "file", and prints their path.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .