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?
Asked
Active
Viewed 9.7k times
2 Answers
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
- 47,463
- 11
- 118
- 144
-
2Note 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
-
1if 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
-
1You 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](https://unix.stackexchange.com/questions/ask) it. – chaos Aug 26 '21 at 09:04
-
@chaos, here is my question: [Find files greater than x kB/MB/GB in size, and also show their size](https://unix.stackexchange.com/questions/666685/find-files-greater-than-x-kb-mb-gb-in-size-and-also-show-their-size) – Gabriel Staples Aug 29 '21 at 01:51
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_
- 28,763
- 21
- 89
- 133