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
findtakes care of two things at once: checks if file exists and size is greater than 51200 bytes. - We redirect stderr to
/dev/nullto hide the error message when the file doesn't exist. - The output of
findwill be non-blank if the file matched both conditions, otherwise it will be blank. - The
[[ ... ]]evaluates to true or false if the output offindis 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
fiWritten 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#