Включение частей пути в расширенные операторы сопоставления с образцом - PullRequest
1 голос
/ 22 апреля 2020

Учитывая следующую структуру каталогов, где все листья являются файлами,

a
├── b
│   ├── d
│   │   └── f
│   └── e
│       └── g
└── c
    ├── d
    │   └── h
    └── e
        └── i

следующая команда перечисляет файлы f и h

$ ls a/@(b|c)/d/.

, но следующая ошибка в списке f и i

$ ls a/@(b/d|c/e)
ls: cannot access 'a/@(b/d|c/e)': No such file or directory

Очевидно, я не могу поставить косую черту в pattern-list. У меня один вопрос, но, возможно, лучше разбить его на куски:

  • Почему?
  • Есть ли какая-то интриси c причина, почему это невозможно?
  • Как я могу получить тот же эффект с помощью oneliner?

1 Ответ

2 голосов
/ 22 апреля 2020

Моя интуиция говорит мне, что Расширение имени файла может генерировать filen ames, но не path names.

Это тот случай, когда вы можно использовать Расширение скобки , хотя:

ls a/{b/d,c/e}
...