Bash scripting: test for empty directory
if [ -z "$(ls -A /path/to/dir)" ]; then
echo "Empty"
else
echo "Not Empty"
fi
Also, it would be cool to check if the directory exists before.
No need for counting anything or shell globs. You can also use read
in combination with find
. If find
's output is empty, you'll return false
:
if find /some/dir -mindepth 1 | read; then
echo "dir not empty"
else
echo "dir empty"
fi
This should be portable.
if [ -n "$(find "$DIR_TO_CHECK" -maxdepth 0 -type d -empty 2>/dev/null)" ]; then
echo "Empty directory"
else
echo "Not empty or NOT a directory"
fi