Вы можете просмотреть все каталоги, включая скрытые директории (начиная с точки), с помощью:
for file in */ .*/ ; do echo "$file is a directory"; done
примечание: использование списка */ .*/
работает в zsh, только если в папке есть хотя бы один скрытый каталог. В bash он также покажет .
и ..
Другая возможность для bash включить скрытые каталоги:
shopt -s dotglob;
for file in */ ; do echo "$file is a directory"; done
Если вы хотите исключить символические ссылки:
for file in */ ; do
if [[ -d "$file" && ! -L "$file" ]]; then
echo "$file is a directory";
fi;
done
Чтобы вывести только конечное имя каталога (A, B, C, как опрошено) в каждом решении, используйте это в циклах:
file="${file%/}" # strip trailing slash
file="${file##*/}" # strip path and leading slash
echo "$file is the directoryname without slashes"
Пример (это также работает с каталогами, которые содержат пробелы):
mkdir /tmp/A /tmp/B /tmp/C "/tmp/ dir with spaces"
for file in /tmp/*/ ; do file="${file%/}"; echo "${file##*/}"; done