digital-garden/dev/linux/File Globbing.md

52 lines
4.2 KiB
Markdown
Raw Normal View History

2024-11-17 19:37:38 +03:00
---
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) -->