How can I make ls (or any other command) list only files bigger than a specific file size?
3 Answers
Use find and its -size
flag.
To find files larger than 100MB:
find . -type f -size +100M
If you want the current dir only:
find . -maxdepth 1 -type f -size +100M
-
3If you need to pass the size in bytes, use
find . -type f -size +4096c
(superuser.com/a/204571/111289)– ᴍᴇʜᴏᴠAug 8, 2017 at 9:19 -
just to extend the answer: to get the number of files bigger than specified, pipe it to word count
find . -maxdepth 1 -type f -size +100M | wc
– B.KocisNov 9, 2020 at 12:55
If you wish to see all files over 100M and to see where they are and what is their size try this:
find . -type f -size +100M -exec ls -lh {} \;
-
1I think it would be easier to use printf parameter
-printf "%p %s"
. See: unixhelp.ed.ac.uk/CGI/man-cgi?find– NuxNov 12, 2014 at 13:53 -
-
Building on this answer:
find /var/lib/docker/containers -name "*-json.log" -type f -size +100M -exec /bin/cp -f /dev/null {} \;
– RichardFeb 12, 2020 at 20:09 -
@Nux The problem with using
%s
is that while the size it prints is machine parsable, it's not human-readable, whereasls -lh
shows a human readable size. Nov 19, 2020 at 21:28
Use the following:
find / -size gt 2MB
or:
find / -size => 2000000
-
5
-
1Though we thank you for your answer, it would be better if it provided additional value on top of the other answers. In this case, your answer does not provide additional value, since another user already posted that solution. If a previous answer was helpful to you, you should vote it up instead of repeating the same information. Feb 27, 2017 at 13:42
-