Fix.#!/bin/sh
NUM=10
BIG_LIST="${HOME}/BigList";
SHORT_LIST="${HOME}/ShortList";
discover() {
unset COUNT;
cd "${1}";
# На случай, если по каким-либо причинам не удаётся перейти в диреторию.
if [ $? -ne 0 ]; then
echo 1>&2 "Cannot change working directory to ${1}";
return 1;
fi
DIR="${PWD}";
for FILE in .* *; do
if [ "${FILE}" = "." -o "${FILE}" = ".." ]; then
continue;
fi
if [ -d "${FILE}" ]; then
# Включая директории.
# COUNT=$((${COUNT:-0}+1));
if [ ! -x "${FILE}" ]; then
echo 1>&2 "${FILE}: no execute (or search) permission on file";
else
(discover "${FILE}");
fi
else
COUNT=$((${COUNT:-0}+1));
fi
done
if [ "${COUNT:-0}" -gt "${NUM}" ]; then
echo "${DIR}" >> "${BIG_LIST}";
else
echo "${DIR}" >> "${SHORT_LIST}";
fi
}
if [ -z "${*}" ]; then
set "${PWD}";
fi
for DIR in "${@}"; do
if [ ! -e "${DIR}" ]; then
echo 1>&2 "${DIR}: No such file ir directory";
continue;
fi
if [ ! -d "${DIR}" ]; then
echo 1>&2 "${DIR} is a file, not a directory";
continue;
fi
(discover "${DIR}");
done