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?

chaos
  • 48,171
shinek
  • 587

2 Answers2

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.

chaos
  • 48,171
  • 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 – Stéphane Chazelas May 13 '15 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: https://unix.stackexchange.com/questions/42841/how-to-skip-permission-denied-errors-when-running-find-in-linux#comment58845_42842 – gmansour Feb 10 '18 at 03: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 Jan 29 '19 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 Oct 25 '19 at 15:21
  • How do you also make it print out the human-readable size of each thing found? – Gabriel Staples Aug 26 '21 at 03:01
  • @GabrielStaples: Good question, you should ask it. – chaos Aug 26 '21 at 09:04
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.

dr_
  • 29,602