How to check in bash if file size is greater than N
You can do this using the find
command and the [[
builtin,
wrapped in a one-liner like this:
[[ $(find /path/to/file -type f -size +51200c 2>/dev/null) ]] && echo true || echo false
- The
find
takes care of two things at once: checks if file exists and size is greater than 51200 bytes. - We redirect stderr to
/dev/null
to hide the error message when the file doesn't exist. - The output of
find
will be non-blank if the file matched both conditions, otherwise it will be blank. - The
[[ ... ]]
evaluates to true or false if the output offind
is non-blank or blank, respectively.
You can use this in if
conditions, for example:
if [[ $(find /path/to/file -type f -size +51200c 2>/dev/null) ]]; then
somecmd
fi
Written by Janos Gyerik
Related protips
3 Responses
Thanks for the good tip, but it should be then instead of do at the end of the if line I think. Took me a few minutes before seeing the mistake.
over 1 year ago
·
Ouch, thanks @wvdv2002, well spotted! (I fixed it now)
over 1 year ago
·
Excellent solution - this got our test harness working again and we're back on schedule.
THANKS!
-->S.
over 1 year ago
·
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Shell
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#