Глоббинг (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?.

Мета информация

Область:: 00 Linux
Родитель::
Источник::
Создана:: 2024-11-14
Автор::

Дополнительные материалы

Дочерние заметки