Globbing
Globbing (от названия программы /etc/glob
, которая первоначально использовала этот прием) — это процесс генерации имен файлов в оболочке с использованием wildcards (другое название globbing — pattern match).
- » * » — ЛЮБОЕ КОЛИЧЕСТВО любых знаков
- » ? » — ЛЮБОЙ ОДИН знак
- [a-z]— range, включая отрицание » ! «
- { txt1, txt2 } — любой текст, указанный в скобках
- » \ » — возвращает каждому знаку первоначальное значение ( escape )
!ls *.ipynb # " * " может стоять в начале имени
0.Bash_Keyboard_Shortcuts.ipynb 1.Bash_links.ipynb 2.Bash_Wildcards_Globbing_Extended_Globbing.ipynb 3.Bash_ls.ipynb 4.Bash_Permissions_and_Ownership.ipynb 5.Bash_Search_for_files.ipynb 6. Bash_Grep_and_Regex .ipynb 7.Bash_file.ipynb 8.Bash_ps.ipynb Untitled.ipynb
!ls myfile* # " * " может стоять в конце имени
myfile myfile-hardlink myfile-softlink
!ls *-* # " * " может стоять в середине имени
hard-link myfile-hardlink myfile-softlink
!ls [1-9]*
1.Bash_links.ipynb 2.Bash_Permissions_and_Ownership.ipynb 3.Bash_Search_for_files.ipynb 4.Bash_Wildcards_Regex_And_Quoting.ipynb
Globbing (wildcards) отличается от regex
ls
0.Bash_Keyboard_Shortcuts.ipynb 6.Bash_file.ipynb 1.Bash_links.ipynb hard-link* 2.Bash_Globbing.ipynb myfile* 3.Bash_ls.ipynb myfile-hardlink* 4.Bash_Permissions_and_Ownership.ipynb myfile-softlink@ 5.Bash_Search_for_files.ipynb
Globbing: name expansion
!ls 0*
0.Bash_Keyboard_Shortcuts.ipynb
Regex: pattern
ls | grep -E '^0.*'
0.Bash_Keyboard_Shortcuts.ipynb
!find . -regex '\./0.*'
./0.Bash_Keyboard_Shortcuts.ipynb
Разница между globbing
и regex
:
a*
Globbing
: имя файла начинается c «a», далее может слеовать любая буква
Regex
: имя файла должно состоять из повторяющихся «a»
Extended globbing
Расширенный globbing (как расширенный regexp, ERE)? дает возможность пользоваться расширенным набором Wildcards:
- » *( exp1 | exp2 | … ) » — 0 or more occurrences of exp1 or exp2, or …. ( AWK аналог / exp* / )
- » +( exp1 | exp2 | … ) » — 1 or more occurrences of exp1 or exp2, or …. ( AWK аналог / exp+ / )
- » ?( exp1 | exp2 | …) » — 0 or 1 occurrences of exp1 or exp2, or …. ( AWK аналог / exp? / )
- » @( exp1|exp2|…) » — exp1 or exp2 or … (AWK аналог exp1|exp2|… )
- » !(exp) » — Anything that doesn’t match exp (AWK аналог !~ )
Extended globbing включается следующим образом:
%%bash
shopt -s extglob # в UBUNTU опция включена по-умолчанию
Отображение скрытых файлов
shopt -s dotglob
По умолчанию, файлы, имена которых заданы при помощи маски, ищутся ls
в текущей директории. Чтобы поиск был рекурсивным, необходимо включить опцию globstar
shopt -s globstar
Write a comment: