Как работает ** при поиске пути

Я не нашел много информации об этом, насколько я знаю, это рекурсивно сопоставляет имена файлов и каталогов, но как это работает?

См. соответствие bash globstar

David C. Rankin 09.04.2022 08:50

Не забудьте включить его с помощью shopt -s globstar. Для отключения используйте shopt -u globstar

David C. Rankin 09.04.2022 09:00

См. глобус в вики Грега.

M. Nejat Aydin 09.04.2022 09:29
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
3
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Linux использует регулярное выражение с некоторыми командами, такими как grep или найти. Как вы говорите, ls или find * рекурсивно покажет все файлы и каталоги.

Подстановочный знак "*" означает: показывает все, что было до этого

Если вы используете ls "*", он покажет весь путь, который раньше ничего не содержал, Итак, все пути в текущем каталоге.

* в этом контексте не имеет отношения к символу, используемому в регулярных выражениях.
Ionuț G. Stan 09.04.2022 09:26

Шарики не являются регулярными выражениями, и ОП запрашивает специальный шаблон шарика (**) в bash, на который ваш пост не отвечает.

M. Nejat Aydin 09.04.2022 09:35

Кроме того, ls "*" с кавычками просто перечисляет все файлы, имя которых буквально состоит из одного символа *.

tripleee 09.04.2022 10:44
Ответ принят как подходящий

Выражение glob ** используется для сопоставления всех файлов и с нулевым или более каталогами и подкаталогами. Если за шаблоном следует /, совпадают только каталоги и подкаталоги.

Это означает, что он используется в рекурсивном поиске файлов во время шаблонов расширения имени пути в командной строке.

В зависимости от оболочки, которую вы используете, ее необходимо включить. В bash это делается с помощью:

$ shopt -s globstar

Вот примеры:

# list all files recursively
$ echo **
# list all files recursively that end with .txt
$ echo **/*.txt
# list all files recursively that are in a subdirectory foo
$ echo **/foo/**

Имейте в виду, что следующий шаблон не работает рекурсивно **.txt. Это выглядит как комбинация двух одиночных звездочек и идентична *.txt.

Примечание: есть тонкие различия между bash и zsh, но в целом все работает одинаково.

Другие вопросы по теме