digital-garden/dev/linux/File Globbing.md
2024-11-17 19:37:38 +03:00

52 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
- globbing
tags:
- maturity/🌱
date: 2024-11-14
---
Глоббинг (globbing) — это техника, используемая в командной оболочке Linux (и других UNIX-подобных системах) для поиска файлов, используя шаблоны вместо перечисления имен файлов. Паттерны глоббинга помогают выполнять операции с несколькими файлами за один раз, что делает работу удобнее и эффективнее.
**Базовые паттерны глоббинга:**
- `*` — Совпадает с любым количеством символов (включая ноль символов). Пример: `file*` найдет `file1.txt`, `fileA`, и любые другие файлы, начинающиеся на "file".
- `?` — Совпадает с одним любым символом. Пример: `file?.txt` найдет файлы вроде `file1.txt` или `fileA.txt`, но не `file10.txt`.
- `[abc]` — Совпадает с любым из символов, указанных в квадратных скобках. Пример: `file[abc].txt` найдет `filea.txt`, `fileb.txt`, или `filec.txt`.
- `[a-z]` — Совпадает с любым символом в указанном диапазоне. Пример: `file[a-z].txt` найдет файлы, такие как `filea.txt`, `filem.txt` и т.д.
- `[!abc]` или `[^abc]` — Совпадает с любым символом, не входящим в указанный список. Пример: `file[!a].txt` найдет все файлы, кроме `filea.txt`.
**Комбинированные паттерны глоббинга:**
- `file*` — Найдет все файлы, начинающиеся с "file".
- `*.txt` — Найдет все файлы с расширением ".txt".
- `file[0-9].txt` — Найдет файлы, такие как `file1.txt`, `file2.txt`, но не `fileA.txt`.
- `file{1,2,3}.txt` — Найдет файлы `file1.txt`, `file2.txt`, `file3.txt`.
**Расширенные паттерны глоббинга:**
- `**/*.txt` — Найдет все файлы с расширением ".txt" в текущей директории и всех ее поддиректориях.
- `[a-z]*` — Найдет файлы, начинающиеся с любой строчной буквы.
- `[[:digit:]]*` — Найдет файлы, начинающиеся с цифры.
**Использование глоббинга в командах:**
- `ls *.txt` — Показать все файлы с расширением `.txt` в текущей директории.
- `cp file?.txt /backup/` — Скопировать файлы, такие как `file1.txt` или `fileA.txt` в директорию `/backup/`.
- `rm file[0-9]*` — Удалить файлы, начинающиеся с `file` и за которыми следует цифра.
- `mv data{1,2,3}.csv /data/archive/` — Переместить файлы `data1.csv`, `data2.csv`, `data3.csv` в `/data/archive/`.
- `tar -cvf archive.tar *.log` — Архивировать все `.log` файлы в `archive.tar`.
**Экранирование специальных символов**
Чтобы указать оболочке, что определенные символы не должны интерпретироваться как метасимволы, их необходимо экранировать с помощью обратной косой черты (`\`).
- `ls \*.txt` — Найдет файл с именем `*.txt`.
- `ls file\?` — Найдет файл с именем `file?`.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
**Родитель**::
**Источник**::
**Создана**:: [[2024-11-14]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->