Что такое ** глобус?


87

У меня есть этот путь в моем файле реакции gulpfile:

var path = {
  HTML: 'src/index.html',
  ALL: ['src/js/*.js', 'src/js/**/*.js', 'src/index.html'],
  JS: ['src/js/*.js', 'src/js/**/*.js'],
  MINIFIED_OUT: 'build.min.js',
  DEST_SRC: 'dist/src',
  DEST_BUILD: 'dist/build',
  DEST: 'dist'
};

Что такое двойной шар?

Я знаю, что такое одиночный шар ... но что такое двойной? один шар

Ответы:


101

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

Другими словами, while /x/*/yбудет соответствовать таким записям, как:

/x/a/y
/x/b/y

и так далее (только с одним уровнем каталога в разделе подстановочных знаков), двойная звездочка также/x/**/y будет соответствовать таким вещам, как:

/x/any/number/of/levels/y

с концепцией «любое количество уровней», включая ноль (другими словами, /x/**/yбудет соответствовать /x/yкак один из вариантов).


В стороне, как бы я ни ненавидел приписывать что-либо мэйнфрейму , я считаю, что это использовалось с первых дней MVS, чтобы разрешить выбор наборов данных на нескольких уровнях :-)


2
Это не имеет никакого смысла. Если * обозначает 0 или более символов, то этот шаблон потенциально может соответствовать / x // y, что бессмысленно. На самом деле вы говорите «любое количество символов, за которым следует любое количество символов». Разве это не просто ... о, я не знаю ... любое количество символов ???
AleksandrH

7
@AleksandrH, нет, это не регулярное выражение в обычном смысле слова: нет соответствия символов, только имена каталогов. Это специально для иерархических файловых систем. По вашему первому пункту, если бы пустые имена каталогов были разрешены, /x//yбыло бы совершенно правильно. Однако я никогда не видел файловую систему, которая позволяла бы это. Что касается вашего второго пункта, *средства соответствуют «любому имени каталога, только один уровень» (поэтому не выходят за пределы следующего /разделителя), а **означает «сопоставить любое количество уровней с любым именем каталога на каждом уровне» (может пересекаться столько /разделители по мере необходимости).
paxdiablo

9
Стоит отметить , что для /x/**/y/, /x/y/также включен, который аккуратно.
Yassine Imounachen

24

Обычно он используется для обозначения любого количества подкаталогов. Так

src/js/**/*.js

Подойдет

src/js/files/*.js
src/js/more-files/*.js

etc
etc

8
Единственная звездочка также соответствует вашим примерам. Я думаю, вы хотели включить дополнительный подкаталог во второй пример.
Саймон Ист

1
@SimonEast нравится? src / js / files / controllers / user.js, src / js / files / models / foo / var.js
AutumnSky

21

**соответствует любому символу, включая косую черту, /
*соответствует любому символу, кроме косой черты (для соответствия только имени файла или каталога)


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.