Есть ли bash, эквивалентный глобализации типа файла в zsh?
В zsh вы можете квалифицировать глобусы с утверждениями типа файла, например *(/)
соответствует только каталогам, *(.)
только нормальные файлы, есть ли способ сделать то же самое в bash, не прибегая к поиску?
2 ответа
Решение
Ты можешь попробовать
ls -ltrd */ #match directories using -d and the slash "/"
или же
echo */
или же
for dir in */
do
...
done
Если вам нужно сделать это рекурсивно, и у вас есть Bash 4+
$ shopt -s globstar
$ for dir in **/*/; do echo $dir; done
Я не думаю, что есть способ сделать это напрямую, но не забывайте, что вы можете использовать параметры теста -d
а также -f
определить, относится ли имя к каталогу или файлу.
for a in *; do
if [ -d "$a" ]; then
echo Directory: $a
elif [ -f "$a" ]; then
echo File: $a
fi
done