Какие символы используются в шаблоне имени файла
Обновлено: 21.11.2024
Во время поиска повторяющихся файлов имя каждого файла проверяется и сравнивается с настройками, заданными в разделе «Имена файлов» на закрепляемой панели «Фильтрация поиска».
Маски имен файлов могут быть как включающими, так и исключающими (подробности см. ниже).
Маски имен файлов могут быть определены с использованием одного из двух синтаксисов: шаблонов подстановочных знаков (по умолчанию) или более сложных регулярных выражений. Используйте переключатель "Использовать сопоставление с регулярным выражением" в разделе масок имен файлов на панели фильтрации поиска, чтобы переключаться между этими двумя режимами.
Шаблоны подстановочных знаков (включая и исключая)
При работе в режиме шаблона подстановочных знаков маски имен файлов состоят из шаблонов символов с несколькими наборами масок, разделенных точкой с запятой. Подстановочные знаки включают '?' и '*', которые соответствуют либо одному экземпляру, либо нескольким экземплярам любого символа (соответственно). Любой другой символ (не подстановочный знак) соответствует самому себе.
Кроме того, любой маске имени файла может предшествовать символ тильды ('~'), который указывает, что маска является исключающей. Если имя файла соответствует исключающей маске, файл всегда будет пропущен.
Вы также можете использовать переключатель "Сравнить полный путь", чтобы сравнить весь путь файловой системы (а не только имя файла) с заданным фильтром.
Примеры подстановочных знаков
Вот несколько примеров масок имен файлов с подстановочными знаками:
• mypicture.bmp — в этой маске нет подстановочных знаков, поэтому она соответствует буквальному. В процесс сравнения дубликатов будут включены только файлы с именем "mypicture.bmp".
• *.bmp — эта маска использует символ звездочки ('*') для включения любых файлов с расширением ".bmp" в именах.
• *.bmp;*gif;*jpg — это составная маска с отдельными элементами, разделенными точкой с запятой. Эта маска будет соответствовать любым файлам ".bmp", ".jpg" или ".jpg", которые она встретит.
• ~family*;*.bmp — первому элементу этой составной маски предшествует тильда ('~'), что означает, что будут исключены все файлы, имена которых начинаются с "family". Затем он будет включать все файлы с расширением ".bmp" в своих именах.
В разделе имен файлов на панели закрепления «Фильтрация поиска» также есть кнопка «Предустановки», которую можно нажать для быстрого доступа к ряду встроенных масок (называемых «Группы файлов»). Они помогут вам быстро приступить к работе, а также могут быть настроены в соответствии с вашими потребностями.
Важное примечание. При использовании подстановочных знаков в масках имен файлов имейте в виду, что маска '*.*' немного отличается от простой '*'. Первый требует наличия точки (.) в имени файла, а второй — нет. Другими словами, шаблон *.* не будет соответствовать именам файлов без расширения. Если вы хотите сопоставить их, используйте вместо этого только одну звездочку (*).
Как отмечалось выше, маски имен файлов также можно определять с помощью мощного синтаксиса регулярных выражений. Регулярные выражения — это формулы, которые можно использовать для сопоставления строк текста, следующих некоторому шаблону. Они позволяют своим пользователям кратко выражать набор правил сопоставления символов, которые в противном случае потребовали бы большого количества переключателей и логических операций.
Duplicate File Detective использует механизм регулярных выражений, совместимый с ECMAScript, и связанный с ним синтаксис.
В этом справочном файле не содержится подробного руководства по формированию регулярных выражений, поскольку в Интернете имеется большое количество таких руководств (зайдите в свою любимую поисковую систему и введите "регулярные выражения" или "регулярные выражения ECMAScript"). синтаксис выражения" в поле поиска, чтобы найти их).
Примеры регулярных выражений:
• .* — соответствует всему (например, любому имени файла).
• .*(back).* — соответствует любому имени файла, содержащему слово "back"
• ^(. *settings).* — соответствует любому имени файла, НЕ содержащему слова «settings».
• ^(. *settings)(.*wonder).* — соответствует любому имени файла, содержащему слово «wonder», но НЕ содержащему слово «settings».
• ^front.* — соответствует любому имени файла, начинающемуся со слова «front».
• .*\d.* — Соответствует именам файлов, содержащим четырехзначное число.
Исключение защищенных типов файлов
По умолчанию Duplicate File Detective исключает защищенные типы файлов из процесса поиска дубликатов. Для управления защищенными типами файлов перейдите на вкладку «Защита» в окне «Настройки».
Несмотря на то, что glob API небольшой, этот модуль обладает большой мощностью. Это полезно в любой ситуации, когда программе необходимо найти список файлов в файловой системе с именами, соответствующими шаблону. Чтобы создать список имен файлов с определенным расширением, префиксом или любой общей строкой в середине, используйте glob вместо написания собственного кода для сканирования содержимого каталога.
Правила шаблона для glob отличаются от регулярных выражений, используемых модулем re. Вместо этого они следуют стандартным правилам расширения пути Unix.Есть только несколько специальных символов, используемых для реализации двух разных подстановочных знаков и диапазонов символов. Правила шаблона применяются к сегментам имени файла (останавливаясь на разделителе пути / ). Пути в шаблоне могут быть относительными или абсолютными. Имена переменных оболочки и тильда ( ~ ) не раскрываются.
Пример данных¶
В примерах в этом разделе предполагается, что в текущем рабочем каталоге присутствуют следующие тестовые файлы.
Если эти файлы не существуют, используйте glob_maketestdata.py в примере кода, чтобы создать их, прежде чем запускать следующие примеры.
Подстановочные знаки¶
Звездочка ( * ) соответствует нулю или более символов в сегменте имени. Например, каталог/* .
Шаблон соответствует каждому имени пути (файлу или каталогу) в каталоге dir без рекурсии в подкаталоги. Данные, возвращаемые функцией glob(), не сортируются, поэтому приведенные здесь примеры сортируют их, чтобы упростить изучение результатов.
Чтобы отобразить файлы в подкаталоге, этот подкаталог должен быть включен в шаблон.
В первом случае, показанном ранее, имя подкаталога указано явно, а во втором случае поиск каталога зависит от подстановочного знака.
Результаты в этом случае такие же. Если бы был другой подкаталог, подстановочный знак соответствовал бы обоим подкаталогам и включал имена файлов из обоих.
Односимвольный подстановочный знак¶
Вопросительный знак ( ? ) – это еще один подстановочный знак. Он соответствует любому одиночному символу в этой позиции в имени.
Предыдущий пример соответствует всем именам файлов, которые начинаются с file , содержат еще один символ любого типа и заканчиваются на .txt .
Диапазоны символов¶
Используйте диапазон символов ( [a-z] ) вместо вопросительного знака для соответствия одному из нескольких символов. В этом примере выполняется поиск всех файлов с цифрой в имени перед расширением.
Диапазон символов [0–9] соответствует любой отдельной цифре. Диапазон упорядочен на основе кода символа для каждой буквы/цифры, а тире указывает на непрерывный диапазон последовательных символов. То же значение диапазона может быть записано как [0123456789] .
Экранирование метасимволов¶
Иногда необходимо искать файлы, имена которых содержат специальные метасимволы, используемые glob для своих шаблонов. Функция escape() создает подходящий шаблон со специальными символами, «экранированными», чтобы они не расширялись и не интерпретировались glob как специальные.
Каждый специальный символ экранируется путем построения диапазона символов, содержащего одну запись.
Получите полный доступ к Learning the UNIX Operating System, Fourth Edition и более чем 60 тысячам других книг с бесплатной 10-дневной пробной версией O'Reilly.
Есть также прямые онлайн-мероприятия, интерактивный контент, материалы для подготовки к сертификации и многое другое.
Если у вас есть несколько файлов с последовательными именами (например, от chap1 до chap12 ) или имена файлов с общими символами (например, aegis , aeon и aerie ), вы можете использовать подстановочные знаки (также называемые метасимволами ) для одновременного указания множества файлов. . Этими специальными символами являются * (звездочка), ? (вопросительный знак) и [ ] (квадратные скобки). При использовании в имени файла, указанном в качестве аргумента команды:
Звездочка заменяется любым количеством символов в имени файла. Например, ae* будет соответствовать aegis , aerie , aeon и т. д., если эти файлы находятся в одном и том же каталог. Вы можете использовать это, чтобы сохранить ввод имени одного файла (например, al* для alphabet.txt ) или назвать несколько файлов одновременно (как в ae * ).
Вопросительный знак заменяется любым отдельным символом (поэтому h?p соответствует hop и hip , но не help< /em> ).
Квадратные скобки могут заключать символы, которые вы хотите сопоставить. Будет совпадать любой из символов в скобках. Например, [ Cc ] hapter будет соответствовать либо Chapter, либо chapter , но [ ch em> ] apter будет соответствовать либо capter, либо hapter . Используйте дефис (-) для разделения ряда последовательных символов. Например, chap [ 13 ] будет соответствовать chap1 , chap2 или chap3. .
Примеры ниже демонстрируют использование подстановочных знаков. Первая команда выводит список всех записей в каталоге, а остальные используют подстановочные знаки для отображения только некоторых записей. Последнее немного сложно; он соответствует файлам, имена которых содержат два (или более) символа a.
Подстановочные знаки полезны не только для перечисления файлов. Большинство команд UNIX принимают более одного имени файла, и вы можете использовать подстановочные знаки, чтобы поместить несколько файлов в командную строку. Например, команда more используется для отображения файла на экране. Допустим, вы хотите отобразить файлы chap3.old и chap1a.old . Вместо того, чтобы указывать эти файлы по отдельности, вы можете ввести команду как:
Это эквивалентно «more chap1a.old chap3.old».
Подстановочные знаки также соответствуют именам каталогов. Например, предположим, что у вас есть подкаталоги с именами Jan , Feb , Mar и т. д. У каждого есть файл с именем summary . Вы можете прочитать все сводные файлы, набрав « more */summary ». Это почти эквивалентно « more Jan/summary Feb/summary . ", но есть одно важное отличие: имена будут расположены в алфавитном порядке, поэтому Apr/summary будет первым в списке.
Получите Изучение операционной системы UNIX, четвертое издание прямо сейчас с онлайн-обучением O’Reilly.
Члены O’Reilly проходят онлайн-обучение в режиме реального времени, а также получают книги, видео и цифровой контент от более чем 200 издателей.
Если вы найдете эту информацию полезной, рассмотрите возможность приобретения экземпляра моей книги Стандартная библиотека Python на примере.
Содержание страницы
Навигация
Эта страница
Примеры
Вывод всех примеров программ из PyMOTW был сгенерирован с помощью Python 2.7.8, если не указано иное. Некоторые из описанных здесь функций могут быть недоступны в более ранних версиях Python.
Если вы ищете примеры, которые работают в Python 3, обратитесь к разделу сайта PyMOTW-3.
Навигация
Цель: | Использовать правила оболочки Unix для уточнения имен файлов, соответствующих шаблону. |
---|---|
Доступно в: | 1.4 |
Несмотря на то, что glob API очень прост, модуль обладает большой мощностью. Это полезно в любой ситуации, когда вашей программе необходимо найти список файлов в файловой системе с именами, соответствующими шаблону. Если вам нужен список имен файлов с определенным расширением, префиксом или любой общей строкой в середине, используйте glob вместо написания кода для самостоятельного сканирования содержимого каталога.
Правила шаблона для glob не являются регулярными выражениями. Вместо этого они следуют стандартным правилам расширения пути Unix. Есть только несколько специальных символов: поддерживаются два разных подстановочных знака и диапазоны символов. Правила шаблонов применяются к сегментам имени файла (останавливаясь на разделителе пути, / ). Пути в шаблоне могут быть относительными или абсолютными. Имена переменных оболочки и тильда ( ~ ) не раскрываются.
Пример данных¶
В приведенных ниже примерах предполагается, что в текущем рабочем каталоге присутствуют следующие тестовые файлы:
Используйте glob_maketestdata.py в примере кода, чтобы создать эти файлы, если вы хотите запустить примеры.
Подстановочные знаки¶
Звездочка ( * ) соответствует нулю или более символов в сегменте имени. Например, dir/* .
Шаблон соответствует каждому имени пути (файлу или каталогу) в каталоге dir без рекурсии в подкаталоги.
Чтобы перечислить файлы в подкаталоге, вы должны включить подкаталог в шаблон:
В первом случае выше имя подкаталога указано явно, а во втором случае поиск каталога зависит от подстановочного знака.
Результаты в этом случае такие же. Если бы был другой подкаталог, подстановочный знак соответствовал бы обоим подкаталогам и включал имена файлов из обоих.
Односимвольный подстановочный знак¶
Другой поддерживаемый подстановочный знак — вопросительный знак ( ? ). Он соответствует любому одиночному символу в этой позиции в имени. Например,
Соответствует всем именам файлов, которые начинаются с «file», содержат еще один символ любого типа и заканчиваются на «.txt».
Диапазоны символов¶
Если вам нужно сопоставить определенный символ, используйте диапазон символов вместо вопросительного знака. Например, чтобы найти все файлы, в имени которых перед расширением есть цифра:
Диапазон символов [0–9] соответствует любой отдельной цифре. Диапазон упорядочен на основе кода символа для каждой буквы/цифры, а тире указывает на непрерывный диапазон последовательных символов. То же значение диапазона может быть записано как [0123456789] .
glob Документация стандартной библиотеки для этого модуля. Обозначение сопоставления с образцом Объяснение подстановки из спецификации языка команд оболочки The Open Group. fnmatch Реализация сопоставления имен файлов. Доступ к файлам Другие инструменты для работы с файлами.
Навигация
© Авторские права Дуг Хеллманн. | | Последнее обновление: 11 июля 2020 г. | Создано с помощью Sphinx. | Дизайн на основе "Листьев" от SmallPark |
Читайте также: