Есть ли 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
Другие вопросы по тегам