Как найти файл по части имени
Очень часто бывают такие ситуации когда не получается найти очень нужный файл на компьютере, при этом точно зная что он есть. Многие даже не помнять полное название файла и его месторасположение. Найти файл по части имени достаточно просто. В этом поможет стандартный поиск Windows, это достаточно мощный инструмент который позволят искать файлы по разным условиям, имени, типу, размеру и другим свойствам. Всех их описывать достаточно долго, да и по большому счету рядовому пользователю они не нужны. Так как чаще всего они ищут именно по имени. Сегодня расскажу как можно найти файл по части имени.
Поиск файлов по части имени
Рассмотрим все на простеньком примере, допустим есть какой-то список документов.
И если в поиск набрать «коп» то поиск найдет все документы где в начале имени встречается это сочетание букв.
А если набрать «пия» то поиск не даст результатов, так как по умолчанию введённое в поисковую строку сочетание букв или цифр будет искаться в начале имени файлов.
Для того чтобы найти файлы по части имени перед «пия» необходимо поставить звездочку «*», в этом случае в результатах отобразиться все файлы в имени которых встречается введённое сочетание символов.
Давайте рассмотрим еще один пример, есть файл именем «Лайфхаки», представим что мы помним только последнею часть «хаки».
Поиск ничего не найдет, так как он будет искать по началу имени.
Для того чтобы поиск искал введённое сочетание во всем имени нужно поставить «*».
Вот так символ «*» помогает искать файлы зная только часть имени, на самом деле подобных символом несколько, есть например, «?» оно позволят искать один пропущенный знак, например, если ввести «к?т» то поиск покажет все файлы с именем «кот», «кит», «кат» и т.д. Так жесть есть символ «#», он делает тоже самое только в числах.
find
Искать файлы разумно через find
с простой маской:
find /lib/ -name "*[0-9]*[0-9]*[0-9]*"
Кавычки чтоб не сработал glob встроенный в bash или zsh. (Иногда получаются неожиданные эффекты)
glob
Через glob
сразу делайте с файлами что хотели:
ls -la *[0-9]*[0-9]*[0-9]*
Или там
tar czf ../backup.tar.gz *[0-9]*[0-9]*[0-9]*
Во всех примерах попадутся ещё и каталоги с такой маской.
Квадратные скобки работают без опций. Дополнения некоторые надо включать в баше.
globstar
Эта опция даёт вам сверхспособности по подстановке! Если ввести:
$ shopt -s globstar
$ ls **
тогда оболочка покажет рекурсивно все каталоги и подкаталоги.
extglob
Эта опция активирует функции, которые чаще ассоциируются с регулярными выражениями. Иногда это очень полезно:
$ shopt -s extglob
$ touch afile bfile cfile
$ ls
afile bfile cfile
$ ls ?(a*|b*)
afile bfile
$ ls !(a*|b*)
cfile
Здесь шаблоны помещаются в круглые скобки и разделяются вертикальной чертой. Вот доступные операторы:
? = соответствует нулю или одному вхождению заданных шаблонов
! = показать всё, что не соответствует заданным шаблонам
* = ноль или более вхождений
+ = одно или более вхождений
@ = ровно одно вхождение
28 / 28 / 4 Регистрация: 23.02.2012 Сообщений: 104 |
|
1 |
|
Определение имен файлов с цифрами26.03.2013, 09:24. Показов 2552. Ответов 7
Добрый день. не выводит файлы заканчивающиеся на 1 директории Е. С остальными цифрами проблем нет.
0 |
sov44 1778 / 760 / 130 Регистрация: 09.04.2011 Сообщений: 1,325 |
||||
26.03.2013, 19:25 |
2 |
|||
1 |
sone17 28 / 28 / 4 Регистрация: 23.02.2012 Сообщений: 104 |
||||||||
26.03.2013, 23:44 [ТС] |
3 |
|||||||
чтобы не плодить темы, спрошу еще. нужно переименовать файлы test01.txt, jierttest02.txt в test_01.txt, test_02.txt..
Если же дописать echo
То выводится: ren «test01» «test_01.txt» …не пойму в чем соль выполнения программы ren, и почему она не находит файл…
0 |
1778 / 760 / 130 Регистрация: 09.04.2011 Сообщений: 1,325 |
|
26.03.2013, 23:52 |
4 |
sone17, нумерация х_01.txt, х_02.txt сквозная или привязана к номеру файла-донора?
0 |
28 / 28 / 4 Регистрация: 23.02.2012 Сообщений: 104 |
|
27.03.2013, 00:02 [ТС] |
5 |
должна быть привязной, иначе неразбериха получится. Добавлено через 8 минут
0 |
Eva Rosalene Модератор 4916 / 1972 / 385 Регистрация: 06.01.2013 Сообщений: 4,666 |
||||||||
04.04.2013, 19:55 |
6 |
|||||||
То выводится: ren «test01» «test_01.txt» Ну так надо
А не
0 |
sone17 28 / 28 / 4 Регистрация: 23.02.2012 Сообщений: 104 |
||||
05.04.2013, 16:48 [ТС] |
7 |
|||
А есть ли альтернативный способ? желательно чтобы можно было записать все одной командой, не используя файла?
0 |
Dragokas 18041 / 7644 / 891 Регистрация: 25.12.2011 Сообщений: 11,426 Записей в блоге: 17 |
||||||||
06.04.2013, 02:18 |
8 |
|||||||
sone17, это можно записать в одну строку: Принцип составления однострочных команд Batch Можно еще добавить фильтрацию по цифре в конце файла на регулярке:
Написано с учетом, что число 2-значное:
Если выполнять вне бат-файла, двойные проценты следует заменить на одиночные.
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
06.04.2013, 02:18 |
Помогаю со студенческими работами здесь Цикл по чтению имен файлов, созданию папок и переносу файлов Задача: Распределение файлов в папках по подпапкам с именами, соответствующими части имен этих файлов ул. Комсомольская, д. 10 (1 ввод) Определение знака между цифрами Копирование файлов с переименованием в случае совпадения имён перемещаемых и имеющихся в папке назначения файлов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 8 |
Быстрый поиск файлов и папок по маске Что это такое и как это сделать?
Маской называют шаблон по которому идёт отбор файлов, где используются специальные символы:
Для Windows систем это символ? или символ *
? — означает любой символ или его отсутствие
* — означает любое число символов.
Н-р если есть файлы:
123.txt
123.doc
12.txt
1.txt
223.txt
И маска будет 12?.* — то отберутся файлы 12.txt, 123.doc и 123.txt
Если маска будет 1*.txt то отберутся все файлы, начинающиеся с 1 с расширением .txt (все кроме 123.doc и 223.txt)
Проверить это всё можно:
Клавишами Win+F или Пуск — Найти
Или в командах DOS типа dir и в файловых менеджерах типа Far или TotalCommander н-р
Насчет того, что? обязательное наличие любого символа 😉
В windows 10 (или 7) зайдите в папку windows
Проводник — это же приложение windows? 🙂
В строке поиска наберите:
?a*
Любуйтесь результатом, который прилагается:
Программы для поиска файлов
Все пользователи Windows рано или поздно сталкиваются с необходимостью поиска на компьютере файлов и папок. Эта задача может быть реализована с использованием стандартного инструментария операционной системы либо при помощи специализированных программ. Начнем с рассмотрения функций поиска Windows 10, о которых знают далеко не все пользователи.
Поиск файлов в Windows 10 стандартными средствами
Для поиска файлов и папок на компьютере традиционно используется встроенный в «Проводник» поисковый инструментарий. Незнакомые с функционалом этого инструментария пользователи выполняют поиск только по имени искомого объекта. Но у него есть и другие возможности, позволяющие находить объекты по маске, дате, размеру, тегам, типам, названию учетной записи Windows файл/папку, из-под которой был создан объект. Кроме того, встроенный системный поиск позволяет задавать условия поиска.
Поиск файлов в Windows 10 по маске
Данная функция позволяет искать объекты, названия которых пользователю неизвестны точно. Для этого используются специальные подстановочные знаки. В основном используются два знака:
- «?». Данным знаком заменяется один символ в названии файла/папки. Например, если необходимо найти файл «песенка», в качестве поискового запроса можно использовать «песенк?». Т.е. Windows будет искать объект, название которого начинается с «песенк», а заканчивается любым символом.
- «*». Знак заменяет неограниченное количество символов. Удобно использовать, например, для поиска файлов с определенным расширением. К примеру, запрос «*.txt» выведет все файлы с расширением «.txt», независимо от их названия. В такой запрос как «П*» выведет все файлы и папки, названия которых начинаются на «П».
Оба этих знака можно объединять в одном поисковом запросе. Например, если ввести «*mo?a», отобразятся объекты, в названии которых присутствует слог «mo», после которого может стоять любой символ, но вот после него должна быть буква «a».
0-1
Поиск (фильтрация) по дате, размеру, типам, тегам
Поиск «Проводника» позволяет фильтровать результаты поиска по различным критериям. Для этого в запрос вводится специальная команда, после которой следует двоеточие и ее параметр. Фильтры можно использовать вместе с названиями, включая те, что написаны с использованием подстановочных записей.
- «Дата». Выводит объекты, созданные в указанную дату или в определенном временном интервале. Например, запрос «*.png дата:09.01.2021» выведет файлы с расширением «.png», созданные 9 января 2021 года.
- «Тип». Фильтрация файлов по таким типам, как музыка, видео, документ и т.д.
- «Размер». Выводит файлы указанного размера в байтах, килобайтах, мегабайтах и т.д. Также можно использовать диапазоны и предлагаемые системой параметры (выводятся на экран после ввода «размер:») – «Крошечные» (0-16 Кб), «Огромные» (1-4 Гб) и другие диапазоны.
- «Тег». Некоторые файлы в Windows могут помечаться тегами самой системой или пользователем. И их можно вводить в качестве фильтра для поиска. Для справки: при сохранении документов в Word также имеется возможность ввода тегов вручную.
- «Пользователь». Параметр, служащий для отображения файлов, созданных в конкретной учетной записи Windows.
Как и в предыдущем случае, в одном поисковом запросе можно использовать несколько параметров.
Использование логических операторов и условий в поиске Windows 10
Еще одна интересная особенность встроенного в «Проводник» поиска – возможность использования логических операторов и задания условий, которым должны соответствовать искомые объекты. Вот наиболее востребованные:
- «AND» или «И» (можно использовать английское и русское написание оператора, но в любом случае его нужно писать прописными буквами). Выводит объекты, соответствующие ключевым словам, помещенным по обе стороны оператора. Например, запрос «1 И 2» отобразит файлы/папки, в названиях которых присутствует обе эти цифры.
- «OR» или «И». Выводит объекты, в именах которых присутствует либо первое, либо второе ключевое слово. Например, запрос «1 ИЛИ 2» приведет к выводу следующего результата:
- «NOT» или «НЕ». Ищет объекты, соответствующие ключевому слову, стоящему до оператора «НЕ», но не содержащее ключевое слово после этого оператора. Т.е., запрос «1 НЕ 2″ выведет файлы/папки с цифрой 1, но без цифры 2 в имени.
- Операторы «<» и «>» (меньше/больше). Используются, например, при поиске файлов размером больше и/или меньше указанного значения. Например, запрос «размер:>50кб размер:<100кб» отобразит файлы больше 50, но меньше 100 килобайт:
Использование специализированных программ для поиска файлов
Стандартные поисковые средства в операционных системах Windows далеко не всегда удовлетворяет требованиям пользователей, сталкивающихся с необходимостью поиска файлов на компьютере. Это особенно заметно, когда поиск выполняется среди большого (несколько тысяч) количества файлов. Стандартный инструментарий Windows уступает специализированным программам не только в скорости, но и в удобстве использования и функциональных возможностях. Рассмотрим популярные приложения, созданные для поиска данных на компьютере.
Wise JetSearch
Wise JetSearch — небольшая и простая в использовании программа, предназначенная исключительно для поиска файлов на дисках и внешних накопителях. Поддерживаются устройства хранения, отформатированные в формате FAT12, FAT16, FAT32, exFAT и NTFS. Не сказать, что эта утилита обладает какими-либо выдающимися способностями, однако скорость ее работы очень высокая.
При запуске утилита индексирует файлы и папки на дисках и внешних носителях, создавая собственную базу данных. Пользователю достаточно ввести хотя бы одну букву/цифру/символ в качестве поискового запроса и программа Wise JetSearch практически моментально выдаст результат. Причем скорость поиска практически не зависит от количества обнаруженных совпадений — будь то один объект или несколько тысяч.
В плане дополнительных функциональных возможностей Wise JetSearch отметим:
- Возможность использования подстановочных знаков «*» и «?» для замены любого количества или одного символа, соответственно.
- Сортировка результатов поиска по имени, пути размещения, размеру, дате изменения и типу.
- Просмотр содержимого текстовых файлов и изображений, а также отображение миниатюр с видео.
Отдельно отметим возможность Wise JetSearch интегрироваться в систему в качестве раскрывающегося виджета, который может заменить собой стандартный системный поиск. Главное окно программы необязательно держать открытым. При вводе поискового запроса в виджет оно автоматически откроется и покажет результат поиска.
Everything
Everything — более мощная в плане поискового функционала программа. Утилита также распространяется бесплатно и полностью поддерживает русский язык. Принцип работы данной программы на первоначальном этапе повторяет таковой у Wise JetSearch — утилита индексирует файлы и папки, размещая их имена и местоположение в своей базе, благодаря чему последующий поиск будет осуществляться мгновенно.
Программа Everything обладает довольно широким функционалом и имеет множество «фишек», делающих работу с ней простой, удобной и эффективной. И в их число входит не только поисковые возможности. Отметим следующие моменты:
- Множество вариантов сортировки результатов поиска с возможностью быстрого переключения между ними посредством горячих клавиш.
- Поиск файлов по типу (видео, аудио и т.д.), с учетом регистра букв, с использованием регулярных выражений и фильтров.
- Возможность создания неограниченного количества собственных фильтров с учетом всех доступных функций поиска. Фильтры также могут быть применены путем нажатия заданных пользователем горячих клавиш.
- Возможность подключения к уделенным или локальным ETP/FTP-серверам и выполнение поиска на них в режиме реального времени.
- Сохранение поисковых запросов вместе с критериями поиска в закладки для последующего быстрого их вызова в любой момент.
- Наличие функции копирования и перемещения файлов с параллельным их переименованием в соответствии с заданным пользователем форматом.
- Предварительный просмотр файлов.
- Наличие собственных поисковых функций (модификаторов и макросов), позволяющих искать объекты по различным критериям и с различными условиями. Полный список этих функций (а их несколько десятков) с пояснениями можно найти в онлайн-справке по программе Everything.
И все перечисленное выше — далеко не полный список возможностей программы Everything.
Quick Search
Quick Search — еще одна поисковая программа для мгновенного поиска файлов и папок на всех подключенных к компьютеру дисках и переносных носителях. По функциональным возможностям она уступает Everything, но значительно превосходит Wise JetSearch. Как и в предыдущих случаях, программа Quick Search поддерживает русский язык.
Из функциональных возможностей программы отметим:
- Поиск с использованием стандартных подстановочных знаков и просмотр содержимого файлов.
- Быстрая (ввиду расположения соответствующих кнопок в главном окне) фильтрация результата поиска по различным типам/категориям файлов. Изначально категорий 6. Но их список можно расширить, привязав к новой созданной категории неограниченное количество расширений файлов.
- Возможность исключения из поиска системных и скрытых каталогов, а также создания собственного списка исключений, что позволит ускорить поиск.
- Быстрый поиск установленных на компьютере приложений с возможностью их запуска прямо из окна программы Quick Search.
- Возможность выполнения веб-поиска с использованием поисковой системы Bing. Данная функция аналогична таковой у адресной строки любого браузера: пользователь вводит несколько символов, браузер отображает наиболее популярные запросы. При клике по выданному программой результату поиска будет запущен выбранный по умолчанию браузер.
SearchMyFiles
SearchMyFiles — самая компактная программа для поиска файлов и папок, размер которой не превышает 300 Кб. При этом в приложении предусмотрены различные функции (условия) поиска, удобно расположенные в одном единственном окне, что упрощает работу с утилитой. Пользователь может задать такие условия поиска, как:
- Режим поиска, включая поиск дубликатов файлов и поиск дублирующихся имен.
- Папки, исключенные из поиска.
- Отдельные маски для поиска папок и файлов с использованием подстановочных знаков.
- Исключение из поиска файлов определенного типа.
- Содержимое файлов. В этом плане SearchMyFiles имеет преимущества перед предыдущими программами, т.к. она может искать не только текст, но и заданный шестнадцатеричный (Hex) код. Также имеется возможность поиска нескольких значений с применением операторов «И» либо «ИЛИ».
- Содержимое (текст или Hex-код), которое не должно присутствовать файлы.
- Время создания, изменения и доступа. Помимо обычного формата времени, здесь можно задействовать, например, режим поиска файлов и папок, измененных/созданных с прошлой перезагрузки компьютера.
- Размер файлов, уровень вложенности папок, атрибуты, количество найденных объектов и другие условия.
Но есть у SearchMyFiles недостаток перед всеми предыдущими программами — относительно низкая скорость поиска. Связано это с тем, что данная утилита не индексирует папки и файлы, имеющиеся на компьютере, а постоянно осуществляет новый поиск, по отдельности сканируя заданное пользователем местоположение искомых объектов на диске.
Сами же результаты поиска программа отображает в отдельном окне. При этом пользователь может на ходу изменять условия поиска (даже если текущая операция не завершена). Список найденных объектов можно отсортировать и отфильтровать, а также задействовать те или иные параметры его отображения.
Есть и возможность выполнения над найденными файлами и папками некоторых простых действий (удаление, копирование, перемещение и т.д.).
LAN Search Pro
И последняя в нашем обзоре программа — LAN Search Pro. Сразу скажем, что она не предназначена для поиска файлов и папок на запоминающих устройствах компьютера. Ее основное предназначение — выполнение поиска в локальной сети.
Программа LAN Search Pro не может похвастаться наличием множества поисковых функций вроде создания условий поиска, но самое основное здесь есть. Пользователю предлагается поиск по названиям файлов и папок с возможностью замены букв/цифр/символов стандартными подстановочными знаками «*» и «?». При необходимости можно задать несколько масок имен, разделив их точкой с запятой.
Также имеется возможность включения в настройках опции поиска по текстовому содержимому. Здесь же можно задействовать фильтры по дате создания и размеру искомых объектов.
Но главное, что в программе LAN Search Pro предусмотрен встроенный инструментарий по работе с сетевыми функциями операционной системы Windows. Пользователь может создать собственный список сетевых компьютеров, а затем выбрать один из режимов поиска на них (например, исключить некоторые ПК из поиска или задействовать поиск данных на компьютере с определенным IP-адресом).
Отдельно предусмотрен функционал поиска общедоступных файлов на локальных FTP-серверах, созданных, как либо компьютере пользователя, либо и на компьютерах в сети.
Среди вспомогательных функций:
- Возможность подключения/отключения локальных сетевых дисков/папок (используется стандартный функционал Windows).
- Сохранение паролей доступа к сетевым компьютерам при помощи встроенного менеджера паролей.
Экспорт с возможностью последующего импорта результатов поиска (таблицы) в файл CSV, XML, HTML или DAT (в данном случае это собственный формат хранения данных LAN Search Pro).
Остались вопросы, предложения или замечания? Свяжитесь с нами и задайте вопрос.
Задача №4. Файловая система, базы данных. Поиск информации в базе данных. Отбор файлов по маске.
Порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах называется файловой системой.
Файл (от английского папка) – это некоторая совокупность данных, хранимая и обрабатываемая, как единое целое.
Файл имеет имя и расширение. Расширение указывает на то, какой именно тип данных находится в файле (программа, текст, рисунок и т.д.). Расширение отделено от имени файла точкой (например, test.doc).
Примеры некоторых типов файлов:
Исполняемые файлы – расширение .exe, .com;
Текстовые файлы – расширения .txt, .doc;
Архивные файлы – расширения .rar, .zip;
Звуковые файлы – расширения .mp3, wav;
Файлы, содержащие изображения — .jpg, .gif, .bmp.
В ОС Windows и других операционных системах используется типовая древовидная структура файловой системы.
Корневой каталог обозначается буквой – именем логического диска. После буквы ставится двоеточие и обратный слэш: C:.
Полный путь к файлу состоит из имени корневого каталога и имен последовательно вложенных друг в друга каталогов, разделенных обратным слэшем. В конце пути находится сам файл: C:StudySubjectMathtext1.txt.
Для выделения, фильтрации группы файлов используют маску (шаблон) имени файла.
Для задания масок кроме обычных символов, допустимых в именах файлов, используют специальные символы:
«*» — заменяет любое количество (в том числе и нулевое) любых символов;
«?» — заменяет один и только один обязательно стоящий в указанном месте символ.
Например, по маске «*.*» будут отобраны вообще все файлы, по маске «*.txt» — файлы с расширением .txt, по маске «as?.doc» — файлы, с расширением .doc, имена которых начинаются на «as» и имеют обязательный непустой третий символ.
Если установлена сортировка по имени или типу, сравнение идет по кодам символов. При этом если задана сортировка, к примеру, по имени, то при наличии одинаковых имен сортировка будет применена к расширению.
Для хранения и анализа большого объема информации организовывают Базы Данных. Под Базой Данных понимают организованную в соответствии с некоторыми правилами, структурированную совокупность логически связанных данных. Эти данные предназначены для удобного совместного хранения и анализа.
Реляционная База Данных состоит из связанных между собой таблиц.
Перемещение по каталогам
Учитель работал в каталоге С:Учебный материал11 классКонтрольные работы.
Затем перешел в дереве каталогов на уровень выше, спустился в подкаталог Теоретический материал и удалил из него файл Введение. Каково полное имя файла, который удалил преподаватель?
1) С:Учебный материал11 классВведение.doc
2) С:Учебный материал11 классТеоретический материалВведение.doc
3) С:Учебный материалТеоретический материалВведение.doc
4) С:Учебный материалВведениеТеоретический материал.doc
Последовательно повторим действия учителя. После того, как он перешел в дереве каталогов на уровень выше, он оказался в каталоге С:Учебный материал11 класс, спустившись в подкаталог Теоретический материал, он оказался в каталоге С:Учебный материал11 классТеоретический материал. Именно там он и удалил файл Введение. Значит полное имя удаленного файла С:Учебный материал11 класс Теоретический материал Введение.doc.
Находясь в корневом каталоге только что отформатированного диска, ученик создал 3 каталога. Затем в каждом из них он создал еще по 4 каталога. Сколько всего каталогов оказалось на диске, включая корневой?
1) 12 2) 13 3) 15 4) 16
Обратим внимание на словосочетание «включая корневой». Значит, на диске существует корневой каталог, 3 вновь созданных каталога и в каждом из трех еще по 4: 1+3+3*4=16.
Отбор файла по маске
Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы: Символ «?» (вопросительный знак) означает ровно один произвольный символ. Символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность. Определите, какое из указанных имен файлов удовлетворяет маске: ?vi*r.?xt
1) vir.txt 2) ovir.txt 3) ovir.xt 4) virr.txt
Последовательно переберем все файлы: 1) не подходит, т.к. «?» в первой позиции маски означает обязательное наличие непустого символа перед буквой v, 2) полностью удовлетворяет условию маски, 3) не подходит, т.к. «?» после точки означает обязательное наличие непустого символа перед буквой x, 4) не подходит по той же причине, что и 1).
Для групповых операций с файлами используются маски имен файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы: Символ «?» (вопросительный знак) означает ровно один произвольный символ. Символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность. Определите, какое из указанных имен файлов не удовлетворяет маске: sys. *
1) syste.m 2) sys23.exe 3) system.dll 4) syszx.problem
По условиям маски файл должен иметь любое расширение, а имя файла должно начинаться на sys и оканчиваться ровно двумя непустыми символами. Этому условию не удовлетворяет только файл 3). Он содержит в имени не два, а три символа после sys.
Поиск маски по набору файлов
Для групповых операций с файлами используются маски имён файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы:
Символ «?» (вопросительный знак) означает ровно один произвольный символ.
Символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность.
Определите, по какой из масок может быть выбрана указанная группа файлов:
Последовательно применим каждую маску к набору файлов:
Маска 1) требует, чтобы имя состояло ровно из 4-х символов, под эти требования не подходят файлы comfort.c и cobalt.cpp.
Маска 2) требует только, чтобы имя и расширение файла начинались на c. Под эти требования подходят все файлы.
Маска 3) требует, чтобы расширение содержало 3 символа, под эти требования не подходят файлы comfort.c и coat.c.
Маска 4) тоже требует, чтобы расширение содержало 3 символа. Аналогично предыдущему случаю не подходят файлы comfort.c и coat.c.
Базы данных. Анализ одной таблицы.
На городской тур олимпиады по математике отбираются те учащиеся, кто набрал на районном туре не менее 10 баллов или полностью решил хотя бы одну из двух самых сложных задач (№ 6 или № 7). За полное решение задач 1– 4 даётся 2 балла; задач 5, 6 – 3 балла; задачи 7 – 4 балла. Дан фрагмент таблицы результатов районного тура.
Автор оригинала: Doug Hellmann.
Цель:
Используйте правила оболочки Unix, чтобы найти имена файлов, соответствующие шаблону.
Несмотря на то, что API glob
невелик, модуль обладает большой мощностью. Это полезно в любой ситуации, когда программе нужно искать в файловой системе список файлов с именами, соответствующими шаблону. Чтобы создать список имен файлов, у всех которых есть определенное расширение, префикс или любая общая строка в середине, используйте glob
вместо написания специального кода для сканирования содержимого каталога.
Правила шаблона для glob
не совпадают с регулярными выражениями, используемыми модулем re. Вместо этого они следуют стандартным правилам расширения пути Unix. Для реализации двух разных подстановочных знаков и диапазонов символов используется всего несколько специальных символов. Правила шаблона применяются к сегментам имени файла (остановка на разделителе пути, /
). Пути в шаблоне могут быть относительными или абсолютными. Имена переменных оболочки и тильда ( ~
) не раскрываются.
Пример данных
Примеры в этом разделе предполагают, что в текущем рабочем каталоге присутствуют следующие тестовые файлы.
$ python3 glob_maketestdata.py dir dir/file.txt dir/file1.txt dir/file2.txt dir/filea.txt dir/fileb.txt dir/file?.txt dir/file*.txt dir/file[.txt dir/subdir dir/subdir/subfile.txt
Если эти файлы не существуют, используйте glob_maketestdata.py
в примере кода, чтобы создать их, прежде чем запускать следующие примеры.
Подстановочные знаки
Звездочка ( *
) соответствует нулю или большему количеству символов в сегменте имени. Например, dir/*
.
glob_asterisk.py
import glob for name in sorted(glob.glob('dir/*')): print(name)
Шаблон соответствует каждому имени пути (файлу или каталогу) в каталоге dir, без дальнейшего повторного перехода в подкаталоги. Данные, возвращаемые функцией glob ()
, не сортируются, поэтому приведенные здесь примеры сортируют их, чтобы упростить изучение результатов.
$ python3 glob_asterisk.py dir/file*.txt dir/file.txt dir/file1.txt dir/file2.txt dir/file?.txt dir/file[.txt dir/filea.txt dir/fileb.txt dir/subdir
Чтобы перечислить файлы в подкаталоге, подкаталог должен быть включен в шаблон.
glob_subdir.py
import glob print('Named explicitly:') for name in sorted(glob.glob('dir/subdir/*')): print(' {}'.format(name)) print('Named with wildcard:') for name in sorted(glob.glob('dir/*/*')): print(' {}'.format(name))
В первом показанном ранее случае имя подкаталога указывается явно, а во втором случае для поиска каталога используется подстановочный знак.
$ python3 glob_subdir.py Named explicitly: dir/subdir/subfile.txt Named with wildcard: dir/subdir/subfile.txt
В этом случае результаты такие же. Если бы существовал другой подкаталог, подстановочный знак соответствовал бы обоим подкаталогам и включал бы имена файлов из обоих.
Подстановочный знак из одного символа
Знак вопроса (?
) – еще один подстановочный знак. Он соответствует любому одиночному символу в этой позиции в имени.
glob_question.py
import glob for name in sorted(glob.glob('dir/file?.txt')): print(name)
Предыдущий пример соответствует всем именам файлов, которые начинаются с file
, содержат еще один символ любого типа, а затем заканчиваются .txt
.
$ python3 glob_question.py dir/file*.txt dir/file1.txt dir/file2.txt dir/file?.txt dir/file[.txt dir/filea.txt dir/fileb.txt
Диапазоны символов
Используйте диапазон символов ( [a-z]
) вместо вопросительного знака, чтобы соответствовать одному из нескольких символов. В этом примере выполняется поиск всех файлов с цифрой в имени перед расширением.
glob_charrange.py
import glob for name in sorted(glob.glob('dir/*[0-9].*')): print(name)
Диапазон символов [0-9]
соответствует любой отдельной цифре. Диапазон упорядочен на основе кода символа для каждой буквы/цифры, а тире указывает на непрерывный диапазон последовательных символов. То же значение диапазона можно записать как [0123456789]
.
$ python3 glob_charrange.py dir/file1.txt dir/file2.txt
Экранирование мета-символов
Иногда необходимо искать файлы с именами, содержащими специальные метасимволы, которые glob
использует для своих шаблонов. Функция escape ()
создает подходящий шаблон со специальными символами, «экранированными», поэтому они не раскрываются или не интерпретируются как специальные с помощью glob
.
glob_escape.py
import glob specials '?*[' for char in specials: pattern 'dir/*' + glob.escape(char) + '.txt' print('Searching for: {!r}'.format(pattern)) for name in sorted(glob.glob(pattern)): print(name) print()
Каждый специальный символ экранируется путем создания диапазона символов, содержащего одну запись.
$ python3 glob_escape.py Searching for: 'dir/*[?].txt' dir/file?.txt Searching for: 'dir/*[*].txt' dir/file*.txt Searching for: 'dir/*[[].txt' dir/file[.txt
Смотрите также
- стандартная библиотека документации для glob
- Нотация сопоставления с образцом – объяснение подстановки из спецификации языка команд оболочки Open Group.
- fnmatch – реализация сопоставления имен файлов.
- Заметки о переносе Python 2 на 3 для glob