I have a question and i would be grateful for the answer if somebody knows one. Ok, to the point. In one of my scripts i have following expression, it is not clear for me form m
This if command simply prints the string file is zero sized and not exist | is exist and zero sized | not exist (obviously zero sized)
if the file does not exist or if the file is zero sized.
If you want your if
command to check only for the zero sized file and not file existence then you can do something like this :
if [[ $(du -h "$the_file_to_check" |cut -f 1) == "0" ]] ;then
echo "file is zero sized" ;
fi
But this if
statement will post a error if file does not exist. Make sure you execute this only when the file is present.
-s
checks not only if the file exists, but also if it contains any data (that is, if it has a size greater than 0 bytes). This is more than the -a
option (which is, in fact, a synonym of -e
) does, which only tests if the file exists.
touch foo
[[ -a foo ]] && echo "File foo exists"
[[ -s foo ]] || echo "File foo exists, but is size 0 bytes"
(I have wondered what the rationale for -a
is, since I'm not aware that it does anything different from -e
.)