Для поиска файлов на сервере хорошо подходит функция glob(), которая возвращает список файлов по заданной маске, например:
$files = glob('/tmp/*.jpg');
В маске можно использовать следующие специальные символы:
Возможно использовать несколько флагов:
$files = glob('/tmp/*.jpg', GLOB_NOSORT|GLOB_ERR);
Далее во всех примерах используется папка tmp со следующим содержимым:

Поиск в директории
Список всех файлов и директорий
$dir = __DIR__ . '/tmp';
$files = array();
foreach(glob($dir . '/*') as $file) {
$files[] = basename($file);
}
print_r($files);
Результат:
Array
(
[0] => 1.svg
[1] => 2.jpg
[2] => 22-f.gif
[3] => 22.svg
[4] => img.png
[5] => path
[6] => prod.png
[7] => style-1.txt
[8] => style-2.css
)
Только файлы
$dir = __DIR__ . '/tmp';
$files = array();
foreach(glob($dir . '/*') as $file) {
if (is_file($file)) {
$files[] = basename($file);
}
}
print_r($files);
Результат:
Array
(
[0] => 1.svg
[1] => 2.jpg
[2] => 22-f.gif
[3] => 22.svg
[4] => img.png
[5] => prod.png
[6] => style-1.txt
[7] => style-2.css
)
Только директории
$dir = __DIR__ . '/tmp';
$files = array();
foreach(glob($dir . '/*') as $file) {
if (is_dir($file)) {
$files[] = basename($file);
}
}
print_r($files);
Результат:
Array
(
[0] => path
)
Поиск по расширению
$dir = __DIR__ . '/tmp';
$files = array();
foreach(glob($dir . '/*.svg') as $file) {
$files[] = basename($file);
}
print_r($files);
Результат:
Array
(
[0] => 1.svg
[1] => 22.svg
)
Поиск по нескольким расширениям
$dir = __DIR__ . '/tmp';
$files = array();
foreach(glob($dir . '/*.{jpg,png}', GLOB_BRACE) as $file) {
$files[] = basename($file);
}
print_r($files);
Результат:
Array
(
[0] => 2.jpg
[1] => img.png
[2] => prod.png
)
Поиск по имени файла
Например, в названия файлов начинаются со слова «style»:
$dir = __DIR__ . '/tmp';
$files = array();
foreach(glob($dir . '/style*.*') as $file) {
$files[] = basename($file);
}
print_r($files);
Результат:
Array
(
[0] => style-1.txt
[1] => style-2.css
)
Или начинаются с цифр:
$dir = __DIR__ . '/tmp';
$files = array();
foreach(glob($dir . '/[0-9]*.*', GLOB_BRACE) as $obj) {
$files[] = basename($obj);
}
print_r($files);
Результат:
Array
(
[0] => 1.svg
[1] => 2.jpg
[2] => 22-f.gif
[3] => 22.svg
)
Поиск в дереве
Поиск по всем подкатегориям более сложный т.к. требует применение рекурсии.
Список всех файлов
function glob_tree_files($path, $_base_path = null)
{
if (is_null($_base_path)) {
$_base_path = '';
} else {
$_base_path .= basename($path) . '/';
}
$out = array();
foreach(glob($path . '/*') as $file) {
if (is_dir($file)) {
$out = array_merge($out, glob_tree_files($file, $_base_path));
} else {
$out[] = $_base_path . basename($file);
}
}
return $out;
}
$dir = __DIR__ . '/tmp';
$files = glob_tree_files($dir);
print_r($files);
Результат:
Array
(
[0] => 1.svg
[1] => 2.jpg
[2] => 22-f.gif
[3] => 22.svg
[4] => img.png
[5] => path/icon-rew.png
[6] => path/marker.png
[7] => path/psd/1.psd
[8] => path/psd/2.psd
[9] => path/psd/index.psd
[10] => path/sh-1.png
[11] => path/title-1.png
[12] => prod.png
[13] => style-1.txt
[14] => style-2.css
)
Список всех директорий
function glob_tree_dirs($path, $_base_path = null)
{
if (is_null($_base_path)) {
$_base_path = '';
} else {
$_base_path .= basename($path) . '/';
}
$out = array();
foreach(glob($path . '/*', GLOB_ONLYDIR) as $file) {
if (is_dir($file)) {
$out[] = $_base_path . basename($file);
$out = array_merge($out, glob_tree_dirs($file, $_base_path));
}
}
return $out;
}
$dir = __DIR__ . '/tmp';
$files = glob_tree_dirs($dir);
print_r($files);
Результат:
Array
(
[0] => path
[1] => path/psd
)
Поиск по имени/расширению
function glob_tree_search($path, $pattern, $_base_path = null)
{
if (is_null($_base_path)) {
$_base_path = '';
} else {
$_base_path .= basename($path) . '/';
}
$out = array();
foreach(glob($path . '/' . $pattern, GLOB_BRACE) as $file) {
$out[] = $_base_path . basename($file);
}
foreach(glob($path . '/*', GLOB_ONLYDIR) as $file) {
$out = array_merge($out, glob_tree_search($file, $pattern, $_base_path));
}
return $out;
}
$path = __DIR__ . '/tmp';
$files = glob_tree_search($path, '*.{jpg,png}');
print_r($files);
Результат:
Array
(
[0] => 2.jpg
[1] => img.png
[2] => prod.png
[3] => path/icon-rew.png
[4] => path/marker.png
[5] => path/sh-1.png
[6] => path/title-1.png
)
Чтобы в результирующих списках выводились полные пути к файлам, достаточно удалить функцию basename()
.
Другие публикации
Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.
В статье приведен пример формы и php-скрипта для безопасной загрузки файлов на сервер, возможные ошибки и рекомендации при работе с данной темой.
Один из вариантов поиска похожих статей в базе данных основан на схождении слов в двух текстах.
Ниже приведён список MIME-заголовков и расширений файлов.
Эти трюки помогут найти любые файлы и папки, отфильтровать результаты поиска и добраться до нужных настроек.
Windows 10 обладает неплохим встроенным поиском, которым почему-то мало кто пользуется. Между тем это действительно крутой инструмент, который пригодится, если вы не очень аккуратно сортируете свои файлы по папкам. Да и вообще зачастую открывать документы поиском просто быстрее, чем проходить полный путь к файлу.
Есть два способа начать искать файлы. Вы можете щёлкнуть значок поиска (лупа) на панели задач. Либо просто откройте меню «Пуск» и начните вводить поисковой запрос.
Вот несколько трюков, которые помогут искать быстро и эффективно.
Фильтрация результатов поиска
Начните искать файлы, приложения и настройки как обычно. Затем нажмите на один из трёх значков в верхней части меню «Пуск», которые отфильтровывают приложения, документы и веб-страницы соответственно.
Ещё вы можете нажать на кнопку «Фильтры» сверху, чтобы указать, что искать: папки, музыку, фотографии, настройки или видео.
Простой поиск настроек
Один из недостатков Windows 10 — неочевидность настройки. Будучи смесью Windows 7 и Windows 8, «десятка» с момента релиза запутала многих пользователей наличием сразу двух панелей управления. Настройки в них разбросаны не особо логично, и в них легко потеряться.
Но поиск Windows 10 облегчает навигацию в настройках. Если вам нужен какой-то отдельный пункт, просто начните вводить его в меню «Пуск», и соответствующая опция найдётся. Неважно, в какой из двух панелей управления она расположена.
Поиск в «Проводнике»
В «Проводнике» Windows 10, как и в прошлых версиях, есть панель для быстрого поиска файлов и папок. Введите имя файла или папки, и Windows 10 найдёт их. Панель поиска также позволяет отсортировать найденные файлы по типу, размеру, времени изменения и другим параметрам. И в «Проводнике» есть ещё крутая возможность — сохранить поисковой запрос на будущее, как умную папку. Для этого просто нажмите «Сохранить условие поиска».
Нечёткий поиск
Если вы хотите найти что-то, но не знаете, что именно, вам поможет способность поиска Windows 10 угадывать слова в поиске. Для этого используются специальные подстановочные символы.
- * — подстановочный знак, который заменяет один или несколько символов в поисковом выражении на любые возможные. Предположим, что вы вводите кот*. Windows 10 найдёт файлы, содержащие слова коты, который, котёл и так далее.
- ? — позволяет искать только один пропущенный символ. Например, по запросу к?т система найдёт и кот, и кит.
- # — используется для поиска любого числа. Например, 5#3 найдёт файлы, содержащие числа 513, 573 и так далее.
Поиск файла по его свойствам
Предположим, вы хотите найти файл, имя которого не знаете, но помните его формат, размер или время, когда вы создали или в последний раз изменяли этот файл. Начните поиск любых файлов запросом *, а затем в настройках фильтрации поиска укажите формат или временной диапазон, примерно соответствующий искомому файлу. Вы можете выполнять поиск по таким свойствам, как дата, тип файла, автор и так далее.
Заметьте, что когда вы меняете условия поисковых фильтров на панели, в строке поиска появляются непонятные слова. Вот что они значат:
- kind — тип файла. Можете ввести kind:document или kind:video, чтобы искать документы и видео соответственно.
- tags — теги, которыми пометили файл. Вы не пользуетесь тегами в Windows 10? Зря. Пометьте нужные файлы тегами, а затем отыскивайте их запросами вроде tags:работа или tags:прочитать.
- author — имя пользователя, создавшего файл. Например, вы уверены, что ваша жена по имени Офелия, с которой вы пользуетесь одним компьютером, создала какой-то файл, который вам нужен. Введите author: Ophelia, и вы увидите все созданные ею файлы, к которым у вас есть доступ. Главное, напишите правильно имя её учётной записи.
Выражения «и», «или», «нет»
Эти выражения позволят вам использовать несколько условий поиска одновременно.
- AND (и) — ищет несколько слов или фраз, которые присутствуют в одном файле. Например, запрос коты AND собаки найдёт для вас файлы, в которых говорится и о котах, и о собаках.
- OR (или) — ищет файлы, в которых присутствуют хотя бы некоторые слова и выражения. Запрос коты OR собаки OR хомячки найдёт все файлы, в которых упомянуты или коты, или собаки, или хомячки.
- NOT (нет) — ищет файлы, в которых нет упомянутого выражения. Например, запрос Heavy Metal NOT Justin Bieber найдет для вас документы или музыку, относящихся к хеви-металлу и не содержащих даже малейших намёков на Джастина Бибера.
- «» — ищут файлы, содержащие некую точную фразу. Например, поиск «коты и собаки» найдёт именно файл коты и собаки, а не бешеные коты и терпеливые собаки.
- () — ищут слова, которые могут располагаться в файле в любой последовательности. То есть запрос (коты собаки хомячки) найдёт и хомячки коты собаки, и собаки коты хомячки.
- > и < — ищут файлы с неточно указанными величинами. Например, date:>01/01/2018 найдёт все файлы, созданные после первого числа января этого года. size:<10MB найдёт файлы меньше 10 МБ.
Теперь, когда вы знаете о поиске Windows 10 всё, можете быть уверены, что никогда не потеряете свои файлы.
За долгое время работы с компьютером на нем скапливается огромное количество файлов и документов. Чтобы не загромождать рабочий стол, файлы перекидываются в другие места для хранения. В итоге появляется огромное количество папок, подпапок и найти нужный файл становится все сложнее. Ведь сложно вспомнить, в какой именно «новой папке» он находится. К счастью, в windows встроена удобная система поиска, которая поможет найти файл на компьютере, даже если вы не помните его точное название.
Поиск файлов на ПК с Windows XP/Vista/7
Для поиска файлов на компьютере с виндоуз XP, сделайте следующее:
- Дайте команду «Пуск – Поиск».
- Нажмите на «Файлы и папки», чтобы запустить мастер поиска файлов и папок.
- Выберите категорию, например, «Видео». Можно выбрать одну, несколько или все категории сразу. Нажмите кнопку «Найти».
Windows найдёт все вышеуказанные файлы на любых разделах диска ПК и внешних устройствах хранения данных (включая сетевые). Например, когда вы собираете воедино все фильмы и видеоролики, самое время воспользоваться поиском, например, только видеофайлов. Уточнить поиск также стоит, чтобы быстрее найти конкретный файл, введя хотя бы часть его названия.
Символ «звёздочка» заменяет любое количество букв и цифр в имени файла. Например, вместо ключевого слова «звёздочка» можно ввести «зв*ка» – будут опрошены все варианты этого слова в имени искомого файла, например, файл с именем «Нет звука.mp3». Указание только расширения имени файла, например, *.docx обнаружит все ваши Word-документы в данном формате, например, файл «резюме.docx».
Также допустимо назначить поиск файла на ПК с Windows в скрытых файлах и папках.
Чтобы найти файлы по ключевому слову в документе, сделайте следующее:
- Дайте уже знакомую команду «Пуск – Поиск» и в графе «Слово или фраза в файле» укажите ключевое слово, например, «реферат».
- В имени файла укажите расширение, к примеру, «.doc».
- Укажите также место поиска, например, диск C. Отметьте нужные параметры, например, поиск в скрытых и системных папках, и нажмите кнопку «Найти».
Будут найдены все документы, в которых присутствует слово «реферат» в формате DOC-файла.
Как отыскать файлы на ПК с Windows 8/8.1/10/10.1
Обновив версию Windows на 8 или 10, пользователь заметит, что инструменты поиска собраны и настроены более удобно, нежели в предыдущих версиях этой ОС. Хотя в первое время может быть неудобно ими пользоваться.
Поиск файлов на ПК по имени
- Дайте команду «Этот компьютер – Поиск» (вкладка поиска). В поисковой строке окна Windows введите часть имени файла (или все имя, если вы его помните). Нажмите «Ввод» на клавиатуре.
- Требуемый файл (или файлы) будет найден (или будут обнаружены).
Поиск файлов по расширению имени
Помня расширение имени файла, с которым вы работали, вы можете найти его по нему. Например, архивные файлы чаще всего имеют расширение .rar или .zip, файлы программ (включая инсталляционные пакеты) – .exe или .msi , и т. д. В результате при поиске файлов по расширению вы с большой долей вероятности обнаружите свою пропажу.
Бывает, что расширение файла вы не запомнили, т. к. система Windows по умолчанию не отображает никакие файловые расширения. Чтобы их включить, сделайте следующее:
- Дайте команду «Пуск – Панель управления – Параметры папок».
- Перейдите по команде «Вид – Параметры – Изменить параметры файлов и папок».
- Снимите флажок «Скрывать расширения для зарегистрированных типов файлов». Для более опытных пользователей может оказаться полезной функция «Скрывать защищённые системные файлы».
- Нажмите последовательно кнопки «Применить» и «OK».
«Проводник Windows» перезапустится и будет отображать расширения файлов. Сопоставив с расширениями похожих файлов искомый (по виду значка файла), впишите в уже знакомую панель поиска его расширение и нажмите клавишу «Ввод». Система Windows найдет исчезнувший файл.
К примеру, пропал видеородик в формате AVI. Откройте уже знакомую панель поиска файлов и введите расширение файлов .avi. Нажмите клавишу «Ввод» и просмотрите найденные файлы.
Поиск файлов по занимаемому месту на диске
Догадавшись, что, например, двухчасовое кино имеет большой объём, например, видеофайл в формате UltraHD («рип» с диска Blu-Ray), можно ввести, например, команду на поиск файлов размером более 10 ГБ.
В Windows применён формат команд для поиска файла по размеру: «System.Size:>размер_в_мегабайтах». Например, в данном случае это будет команда «System.Size:>10240МБ».
С большой долей вероятности данное кино будет найдено, например, на внешнем (сетевом) диске.
Как найти скрытые файлы
Для получения доступа к скрытым файлам включите функцию их отображения.
- Перейдите в уже знакомое окно настроек параметров папок Windows.
- Дайте уже знакомую команду изменения настроек папок и поиска.
- Включите опцию «Отображать скрытые файлы, папки и диски».
- Нажмите кнопки «Применить» и «OK».
Повторите поиск файла по уже знакомым атрибутам: имени и/или его расширению, размеру и т. д.
Поиск файлов по ключевым словам
Ключевые слова в содержимом файла (письма, документы, книги и т. д.) могут быть указаны напрямую в поле «Имя файла». Так, если вы ищете курсовые проекты, так и напишите в имени файла – «курсовая».
Система Windows отобразит файлы с имеющимися ключевыми словами (или фразами).
Сторонние программы для поиска файлов
Функционалом файлового менеджера наделён не только встроенный в Windows «Проводник». В прошлом это были программы Norton/Volkov Commander, Far File Manager, Total Commander, File Explorer и их аналоги.
Поиск файлов по примеру с Total Commander
Текстовые документы, независимо от их форматирования, приложение Total Commander ищет по имени, размеру и ключевым словам (или фразам).
- Скачайте, установите и запустите приложение Total Commander.
- Укажите диск (или его раздел, том) для поиска пропавших файлов.
- Перейдите в подменю «Команды – Поиск файлов».
- Укажите имя и/или расширение файла в поисковой строке «Искать файлы».
- Если вы ищете текстовый документ по ключевым фразам (или словам), отметьте опцию «С текстом…» и введите ваши «ключи» поиска.
Система Windows найдет искомые файлы.
Найти файл на ПК под управлением Windows – не проблема. Главное, чтобы вы его не стёрли безвозвратно, используя другие приложения для этой цели. Система Windows уже обладает нужным инструментарием поиска файлов, папок и дисков, но если по каким-то причинам он вас не устроит – воспользуйтесь сторонним файл-менеджером, в котором могут содержаться дополнительные функции по поиску файлов на дисках.
Привет, друзья. В этой публикации рассмотрим такой вопрос: как найти файл по содержимому. Т.е. по каким-то отдельным ключевым словам или словосочетаниям. Если вам нужно найти на своём компьютере какой-то документ или текстовый файл, при этом вы не помните его название, но вам чётко врезались в память отдельные слова или фразы с этого документа, вы найдёте этот документ. Правда, поиск в проводнике Windows для этих целей не годится, его лучше использовать только для поиска данных по ключевым фразам в названиях файлов. Для поиска по текстовому содержимому файлов необходимо прибегнуть к различным сторонним программам. И мы рассмотрим несколько таких – Total Commander, Everything, Archivarius 3000.
Как найти файл по содержимому
***
Друзья, к рассмотрению темы, как найти файл по содержимому, меня подтолкнула просьба о помощи одного читателя сайта:
Здравствуйте, админ. Проблема такая: срочно нужно найти файл по его содержимому среди целой кучи других похожих файлов, находящихся на жёстком диске моего компьютера. У меня на диске D находится много папок с файлами, и среди них есть текстовый файл с решением одной математической задачи. Но я помню только часть исходных данных y0= (4*2-22)/4=1, более ничего не помню. Расширение файла тоже не помню, это может быть «.txt», «.doc», «.xlsx», «.ttf» и даже «.phtml» или «.php3». Пробовал применить программу Multi Text Finder, но она ничего не нашла.
Программа Multi Text Finder, друзья, с виду вроде бы серьёзная, в ней можно выбирать типы документов для поиска, ключевые слова для поиска по содержимому документов, можно использовать маски поиска. Но, увы, это программа совершено бесполезна, найти файлы, содержащие текст, она не может. Возможно, в какой-то части случаев она и работает, но мой тест показал её полную непригодность. Я указал место поиска, ввёл ключевое слово, запустил поиск. Но поиск ничего не обнаружил.
Хотя по указанному пути документ не то, что с ключевым словом внутри, с ключевым словом в названии есть.
Увы, так бывает. Эту программу мы, друзья, отправим в топку. И давайте посмотрим на эффективные программы, которые реально помогут нам найти нужный файл, содержащий текст, какой мы помним.
Примечание: друзья, проводник Windows не ищет файлы по их внутреннему содержимому, но у него есть иные критерии поиска, с помощью которых вы можете сузить область поиска нужного вам файла. Как работать с поиском в системном проводнике, смотрите в статье «Как найти файл на компьютере».
Total Commander
Поиск файлов по ключевым словам в их тексте предусматривает функциональный файловый менеджер Total Commander. Эта программа сможет найти исчезнувший на вашем компьютере файл и по содержащемуся тексту, и по названию, и по расширению, и по дате создания, и по различным атрибутам. Ну и также у Total Commander много прочих интересных возможностей для опытных пользователей, так что если вы никогда не пользовались этим файловым менеджером, решение вашей проблемы может стать идеальным поводом для знакомства с ним и исследования прочих его возможностей.
Как найти файл по содержимому в Total Commander? На его панели инструментов есть кнопка поиска файлов, кликаем её. Или можем использовать горячие клавиши Alt+F7.
В форме поиска выбираем место поиска, можем указать весь раздел диска, на котором предположительно хранится нужный нам файл. И вводим ключевой запрос. Если мы его введём в графу «Искать файлы», поиск будет выполнен по названиям файлов. Если же мы активируем графу «С текстом» и в неё впишем ключевой запрос, то поиск будет выполняться по содержимому файлов. Что, собственно, и нужно нам. Вписываем в графу «С текстом» те слова или фразы, которые мы помним. И жмём «Начать поиск».
И далее по мере выполнения поиска на нижней панели окошка мы получим результаты поиска. И вот нам удалось найти файл, содержащий текст, который мы помним.
А вот и сам файл.
Чтобы поиск выполнялся быстрее, нужно максимально сузить его область, т.е. указать более точный путь нахождения файла. И тогда процедура поиска займёт меньше времени.
Everything
Друзья, для поиска файлов на Windows-компьютере есть специальные программы. Одна из них – бесплатная Everything. Очень простая и удобная, может работать обычно с установкой в Windows, и также может работать портативно. Ищет файлы по именам и содержимому, предусматривает расширенный поиск с разными настройками и фильтрами. Программа изначально выполняет индексацию содержимого компьютера, и благодаря этому поиск файлов выполняется мгновенно, гораздо быстрее, чем в проводнике Windows. Но индексация проводится только по именам файлов и, соответственно, мгновенный поиск возможен, если мы вводим ключевое слово в названии документа. Внутреннее содержимое файлов программа не индексирует, и, соответственно, если нам понадобится найти файлы, содержащие текст, придётся подождать, этот процесс может быть небыстрым.
Итак, программа Everything. Дабы искать в ней файлы по названиям, вводим ключевое слово из названия в поле программы в её главном окне.
Если же мы хотим найти файл, содержащий текст, в меню «Поиск» запускаем «Расширенный поиск».
Указываем ключевые слово или фразу. И желательно указать местоположение искомого файла, хотя бы примерное, хотя бы просто раздел диска. Если хотите, можете использовать другие фильтры и настройки расширенного поиска.
И, вуаля – файл найден.
FileSearchy
Archivarius 3000
И ещё одну программу, друзья, рассмотрим, которая может найти файлы, содержащие текст, какой мы помним – это программа Archivarius 3000. Но это программа максимум-уровня, это суперфункциональный внутрисистемный поисковик файлов, включающий возможность поиска документов по их содержимому. И такой поиск программа выполнят мгновенно за счёт индексации содержимого указанных нами областей компьютера. Это не программа-однодневка, она платная, нужна она не всем, а только тем, кто постоянно работает с документами, у кого на компьютере хранятся большие их базы, и кому принципиально нужна оперативность и эффективность при поиске данных. Archivarius 3000 изначально индексирует указанные нами пути хранения документов, и впоследствии периодически также выполняет индексацию, чтобы в индексе всегда были актуальные сведения.
Механизм поиска у Archivarius 3000 такой, как у поисковых систем: программный поисковик ищет файлы не только с прямым вхождением наших ключевых запросов, но также с изменёнными словоформами, т.е. с разными падежами существительных и прилагательных имён, с разными временами глаголов и прочими морфологическими изменениями. И также при поиске учитывается плотность ключевых слов, а результаты поиска выстраиваются по релевантности. Друзья, программа очень серьёзная, у неё настраиваемый механизм индексации, собственный просмотрщик документов. Более того, программа даже может обеспечивать удалённый доступ к нашей базе документов по принципу сервера, и мы сможем искать файлы на нашем компьютере, будучи далеко от него, по сути, из любой точки мира. Так что в нескольких словах об этой программе не расскажешь, она достойна отдельного обзора. Покажу лишь, как пользоваться настроенной программой.
Как найти файл по содержимому с использованием Archivarius 3000? Вводим ключевой запрос, будь это слова из названия, будь это слова в тексте документа. И отсматриваем результаты поиска. Смотрим, где встречается все слова из нашего запроса.
При необходимости можем задействовать фильтры поиска – атрибуты в терминологии самой программы.
Можно самому написать файл с расширением «bat», который будет читать исходный файл и создавать пустые файлы из списка. Его содержимое выглядит примерно так:
FOR /F %%i in (wer.txt) do cd. > %%i
Здесь «wer.txt» — это ваш текстовый документ-список. Желательно, чтобы в этом имени файла не было пробелов. Кавычки ставить не нужно, так как кавычки в этой конкретной ситуации подразумевают указание какой-то произвольной строки, а не имени файла.
Если нужно создавать файлы в какой-то подпапке, конструкцию «cd. > %%i» можно заменить на «cd. > foldername/%%i»
Далее, запускаете этот батник и он генерирует файлы из списка. Будет лучше всего, если файл со списком и батник будут в одной папке находиться.
И ещё, если в папке есть, например, файл 123.txt с каким-то содержимым и, при этом, в файле wer.txt (тот, который вы в качестве списка-донора используете) есть такое же название, вы после отработки батника получите файл 123.txt нулевого размера. Так что, аккуратнее с этим — не затрите ничего нужного. В идеале, это всё нужно делать в отдельной папке, где нет больше никаких файлов, кроме батника и донора.
В этой инструкция, как скопировать, в текстовый файл, имена всех файлов в папке.
В общем ничего сложного в этом и сделать это можно
штатными средствами, которые есть в каждой операционной системе “из
коробки”. Далее, в этой статье, будут
инструкции для двух самых распространенных ОС.
Имена всех файлов в папке в текстовый файл в ОС
Windows
В ОС Windows нужно открыть “Командную строку”
(файл cmd.exe). И там выполнить команду:
dir /b /a-d >
filename.txt
Эта команда расшифровывается так:
- dir – команда, которая показывает
содержимое текущего или указанного каталога. - /b – опция команды, которая
показывает, что нужно выводить только имена (без доп. информации). - /a-d – опция команды, которая показывает, что нужно выводить
только файлы, без папок. - > filename.txt – перенаправление
вывода команды в текстовый файл вместо экрана.
Вывод такой команды, в текстовом файле будет выглядеть вот так:
Более сложный вариант команды:
dir D:\download /b /a-d >
d:\temp\filename.txt
В этом варианте явным образом указаны пути, папки и файла.
Если нужно выбрать файлы из вложенных папок, тогда в команду нужно
добавить опцию /s:
dir /b /a-d /s > filename.txt
Если нужно добавлять имена файлов к существующему содержимому файла (без
перезаписи файла), тогда условие перенаправления нужно удвоить:
dir /b /a-d >> filename.txt
Имена всех файлов в папке в текстовый файл в ОС Linux
В ОС Linux есть аналогичная команда, которая
тоже выполняется в терминале (консоли):
Эта команда расшифровывается так:
- ls – команда, которая показывает
содержимое текущего или указанного каталога. Но, в отличии от команды
Windows, в этой команде нет опции, которая
“отсекает” имена папок. Поэтому нужно использовать обходной путь, для
получения только имен файлов. - -p – опция, которая добавляет слэш к именам папок. Это нужно
для того, чтобы “отсечь” имена папок. - | – перенаправление вывода команды ls
в команду grep. - grep – команда, которая обрабатывает входной поток и выбирает
из него элементы, по заданным условиям. - -v ‘/$’ – условие для удаления имен папок.
- > filename.txt – перенаправление
вывода команды в текстовый файл вместо экрана.
Таким образом получается следующее:
Команда ls выдает список файлов и папок и
перенаправляет этот список в команду grep. Команда grep, удаляет из этого
списка имена папок.
Если нужно выбрать файлы из вложенных папок, тогда в команду
ls нужно добавить опцию /R:
Дополнительные OR (ИЛИ)
условия команды grep нужны для удаления имен вложенных папок.
Поделитесь этим сайтом с друзьями!
Если вам оказалась полезна или просто понравилась эта статья, тогда не стесняйтесь – поддержите материально автора. Это легко сделать закинув денежек на Яндекс Кошелек № 410011416229354. Или на телефон +7 918-16-26-331.
Или другими способами (с карты, с телефона)
Даже небольшая сумма может помочь написанию новых статей 🙂
Или поделитесь ссылкой на эту статью со своими друзьями.
Доброго вам времени суток, мои дорогие друзья. Ну как подходит подготовка к Новому году? Я пока еще не всё успел. Ну да ладно. Сегодня не об этом. Помнится мне, как я накачал много разных картинок из интернета под одну тематику. Были самые обычные картинки, но названия у них были что-то вроде «xuj67hsbs6o9.jpg». В принципе в большинстве случаев мне все равно, как эти файлы называются, но если мне приходится с ними работать, то мне лучше, чтобы у каждого файла было нормальное запоминающееся название, иначе уходило бы больше времении всю работу.
А вы знаете какой объем файлов иногда приходится перелопачивать? 100-200-300 файлов. А у всех них название как из задницы. Поэтому проще их переименовать за несколько секунд и радоваться жизни, а то живешь как в бардаке.
В общем давайте посмотрим как переименовать сразу много файлов несколькими способами, благодаря которым переименование займет не более парочке секундю
Переименование файлов в проводнике
Один файл переименовать легко, можно нажать на него правой кнопкой мыши и выбрать переименовать, после чего написать нужное название. Также один файл можно переименовать с помощью клавиши F2, дополнительных настроек проводника и т.д. Но что делать, если у нас порядка 40 файлов и их все нужно переименовать? Можно тыкать на каждый по отдельности, а можно переименовать их всех одним махом.
Самый простой метод группового переименования файлов и без стороннего программного обеспечения – это проводник.
1.Откройте любую папку, вложите туда все файлы, которые вы хотите переименовать.
2. Зайдите в “Вид” и нажмите на “Таблица”.
3. Выделите все файлы, которые вы хотите переименовать: выбираем первый и удерживая клавишу Shift стрелкой вниз выделяем все файлы (или нажмите клавиши Ctrl+A на клавиатуре).
4. Нажмите на первый файл в списке правой кнопкой мыши и выберите “Переименовать” => введите новое имя и нажмите Enter.
Пакетное удаление
Сейчас большинству людей не нужно регулярно удалять 500 000 файлов, распределенных по 45 000 папкам, но я уверен, что у всех нас был момент, когда ваша музыкальная коллекция уже не на пустом месте. Удаление чего-либо, кроме нескольких файлов с помощью проводника файлов может стать длительным процессом, так как Windows решает перечислить каждый файл перед отправкой его упаковки.
Мы можем использовать несколько инструментов для пакетного удаления файлов. Для некоторых задач использование командной строки является простым и эффективным методом. Для других мы будем использовать пакетный файл .bat. Существует также ряд сторонних приложений.
Командная строка
Мы можем использовать две мощные команды: DEL и rmdir . Надеемся, что DEL не требует пояснений, а rmdir — это синтаксис для удаления каталога. Мы можем добавить дополнительные параметры в команду для большего контроля над файлами в данном каталоге.
Нажмите Win + R , введите cmd и нажмите Enter . Чтобы удалить одну папку, мы можем использовать эту команду:
del C: \ enter \ your \ path \ here / f / s
Основная команда находит указанную папку, в то время как параметр / s удаляет все файлы, содержащиеся в подпапках каталога, а параметр / f игнорирует любой параметр только для чтения. Однако эта команда оставляет структуры файлов, что может немного раздражать. , В этом случае мы можем связать команду del с rmdir следующим образом:
del / f / s / q C: \ enter \ your \ path \ here> nul rmdir / s / q C: \ введите \ ваш \ путь \ здесь
Мы также добавили еще пару параметров. / q выбирает «тихий режим», то есть вам не будет предложено Да / Нет, пока ваши файлы не сгорят. Nul — это специальный файл, который отбрасывает все записанные в него данные, что означает, что процесс перечисления Windows, занимающий некоторое время, не записывается в файл. Обратите внимание, что это навсегда удалит ваши файлы .
Пакетный файл
Пакетные файлы — это, по сути, сценарии, которые вы можете запускать для выполнения определенных задач в вашей системе. Если вы знаете, как создать серию команд, вы можете создавать длинные сценарии, автоматизирующие задачи « и процессы, чтобы сэкономить время. В этом случае мы будем использовать некоторые основные команды для сценария пакетного удаления.
В этом примере я собираюсь удалить папку пакетного переименования MUO, созданную для предыдущих примеров. Щелкните правой кнопкой мыши на рабочем столе и создайте новый текстовый документ . Назовите его BatchDelete и откройте его.
Теперь, когда мы знаем путь, мы можем создать командный файл. Используйте эти команды:
cd C: \ введите \ ваш \ путь \ здесь del * / S / Q rmdir / S / Q «C: \ введите \ ваш \ путь \ здесь»
Теперь вы можете сохранить и выйти . Найдите файл BatchDelete.txt и нажмите F2 . На этот раз мы собираемся изменить расширение файла. Измените .txt на .bat и нажмите Enter при появлении предупреждения. Поздравляем, вы только что создали свой первый пакетный файл!
NB. Вам придется обновлять путь к пакетному файлу каждый раз, когда у вас есть сеанс массового удаления. Или вы можете иметь одну папку для удаления, а также выгрузить туда все свои файлы и повторно запустить пакетный файл. Однако, в зависимости от количества и размера удаляемых файлов, их передача может (вероятно, будет!) Занимать больше времени.
Переименование файла с помощью командной строки
С помощью командной строки можно переименовать большое количество файлов, а также с помощью той же команды можно изменить расширение всех файлов в папке.
1.Откройте командную строку в папке с нужными файлами: зайдите в папку с файлами для переименование и в адресной строке введите cmd, после чего нажмите Enter. После данных действий откроется командная строка в данной папке.
2. Переименовываем файлы с помощью команды Ren, вернее с помощью данной команды мы будем менять расширение файлов. Вводим ren *.jpg *.png и нажимаем Enter (вместо jpg пишите расширение с которого нужно переименовать, а вместо png – расширение, на которое нужное переименовать). Если файлы без расширения, но вы хотите его добавить, ведите команду ren *. *.png и нажмите Enter.
3.Таким способом мы сменили расширение для группы файлов.
С помощью сторонних утилит
Никакие встроенные инструменты не сравнятся по функциональности со специальными программами, разработанными специально для пакетного переименования. В Сети можно найти множество таких бесплатных утилит, достаточно ввести в поиске bulk file rename.
Мы рассмотрим переименование на примере программы Bulk Rename Utility. С её помощью очень удобно изменять имена папок и файлов, а также расширения последних.
При первом запуске может показаться, что интерфейс утилиты пришёл прямо из ада и, возможно, в этом есть доля правды. Зато пользователю не нужно переходить по многочисленным вкладкам и меню: он получает доступ ко всем функциям из одного окна.
Итак, допустим, у нас есть группа аудиофайлов, которые хочется привести к приятному для глаза виду. В данном случае раздражают цифры и отсутствие названия исполнителя.
Запускаем приложение и через встроенный файловый менеджер переходим в нужную нам папку. Далее, уже знакомым сочетанием клавиш Ctrl + A выделяем все файлы. Нам нужно удалить первые 3 символа в начале имени каждого файла и дописать название исполнителя в самом начале. Для этого указываем необходимые параметры на панелях Remove и Add, после чего жмём Rename.
Теперь сделаем так, чтобы все расширения состояли из символов в нижнем регистре: на панели Extension выбираем вариант Lower и нажимаем Rename.
Как видите, в окне программы доступны и другие панели. К примеру, Numbering позволяет нумеровать документы различными способами, а с помощью Case можно менять регистр символов в именах файлов. Благодаря столбцу New Name во встроенном проводнике, который показывает результат переименования ещё до его применения, вы легко разберётесь в остальных инструментах Bulk Rename Utility.
Последнюю операцию с файлами и папками, выполненную в программе, можно легко отменить комбинаций клавиш Ctrl + Z.
Переименование нескольких файлов с помощью PowerShell
1. Откройте PowerShell в папке с файлами, которые вам нужно переименовать. Откройте через проводник папку с нужными файлами, после чего зайдите в “Файл” слева вверху => из открывшегося меню выберите “Запустить Windows PowerShell” => “Запустить Windows PowerShell”.
Результат на лицо
Всё чаще современные программисты предпочитают работать с языком программирования Python, потому что он очень гибкий, позволяющий легко взаимодействовать с операционной системой. Он также поставляется с функциями по работе с файловой системой. Решение задачи распечатки списка файлов в директории можно решить используя разные модули: os, subprocess, fnmatch и pathlib. Следующие решения демонстрируют, как успешно воспользоваться этими модулями.
Применение os.walk()
Модуль os содержит длинный список методов, которые касаются работы с файловой системой и операционной системой. Один из них walk(), возвращающий имена файлов в дереве каталогов, двигаясь по дереву сверху вниз или снизу вверх (сверху вниз по умолчанию).
os.walk() возвращает список из трех элементов: имя корневого каталога, список имен вложенных папок и список файлов в текущем каталоге. Он одинаково хорошо работает с интерпретаторами Python 2 и 3.
import os
for root, dirs, files in os.walk("."):
for filename in files:
print(filename)
Использование командной строки, через subprocess
Модуль subprocess позволяет выполнить системную команду и собрать её результат. В нашем случае вызываемая системная команда выглядит следующим образом:
$ ls -p . | grep -v /$
Инструкция ls -p . распечатывает список файлов текущего каталога, добавляя разделитель / в конце имени каждого подкаталога, которые нам понадобится на следующем шаге. Вывод этого вызова передается команде grep, которая отфильтровывает данные по мере поступления.
Параметры -v / $ исключают все имена записей, которые заканчиваются разделителем /. Фактически / $ — регулярное выражение, которое соответствует всем строкам, содержащим символ / самым последним символом в строке, который определяется символом $.
Модуль subprocess позволяет строить настоящие конвейеры, а также соединять входные и выходные потоки, как это делается в командной строке. Вызов метода subprocess.Popen() открывает соответствующий процесс и определяет два параметра stdin и stdout.
Первая переменная ls определяет процесс выполнения ls –p для захвата stdout в конвейере. Поэтому поток stdout определяется как subprocess.PIPE. Вторая переменная grep также определяется как процесс, но вместо этого выполняет инструкцию grep –v /$.
Чтобы прочитать вывод команды ls из конвейера, поток stdin grep присваиваивается в ls.stdout. В заключение, переменная endOfPipe считывает вывод команды grep из grep.stdout, затем распечатывается в stdout циклом for.
import subprocess
# определение команды ls
ls = subprocess.Popen(["ls", "-p", "."],
stdout=subprocess.PIPE,
)
# определение команды grep
grep = subprocess.Popen(["grep", "-v", "/$"],
stdin=ls.stdout,
stdout=subprocess.PIPE,
)
# чтение из данных из потока stdout
endOfPipe = grep.stdout
# распечатка файлов в строку
for line in endOfPipe:
print(line)
$ python find-files3.py
find-files2.py
find-files3.py
find-files4.py
...
Данное решение работает достаточно хорошо с Python 2 и 3, но его можно улучшить. Рассмотрим другие варианты.
Комбинация os и fnmatch
Решение, использующее подпроцессы, элегантно, но требует большого количества кода. Вместо этого, давайте объединим методы из двух модулей os и fnmatch. Этот вариант также работает с Python 2 и 3.
В качестве первого шага, импортируем модули os и fnmatch. Далее определим каталог, в котором нужно перечислить файлы, используя os.listdir(), а также шаблон для фильтрации файлов. В цикле for выполняется итерация списка записей, хранящихся в переменной listOfFiles.
В завершение, с помощью fnmatch отфильтровываются искомые записи и распечатываются соответствующие записи в stdout.
import os, fnmatch
listOfFiles = os.listdir('.')
pattern = "*.py"
for entry in listOfFiles:
if fnmatch.fnmatch(entry, pattern):
print(entry)
$ python find-files.py
find-files.py
find-files2.py
find-files3.py
...
Использование os.listdir() и генераторов
Следующий вариант объединяет метод os.listdir() с функцией генератором. Код работает как с версиями 2, так и с 3 Python.
Как уже было сказано ранее, listdir() возвращает список записей для данного каталога. Метод os.path.isfile() возвращает True, если данная запись является файлом. Оператор yield завершает работу функции, но сохраняя текущее состояние и возвращает только имя записи являющейся файлом.
import os
def files(path):
for file in os.listdir(path):
if os.path.isfile(os.path.join(path, file)):
yield file
for file in files("."):
print(file)
Использование pathlib
Модуль pathlib предназначен для парсинга, сборки, тестирования и иной работы с именами файлов и их путями, используя объектно-ориентированный API вместо низкоуровневых строковых операций. Начиная с Python 3 модуль находится в стандартной библиотеке.
В следующем листинге определяется текущий каталог точкой («.»). Затем метод iterdir() возвращает итератор, который возвращает имена всех файлов. Далее циклом for распечатываются имена файлов друг за другом.
import pathlib
# определение пути
currentDirectory = pathlib.Path('.')
for currentFile in currentDirectory.iterdir():
print(currentFile)
В качестве альтернативы, можно отфильтровать файлы по именам с помощью метода glob. Таким образом, получаем требуемые файлы. Например, в приведенном ниже коде перечисляются Python файлы в выбранном каталоге, указав шаблон «*.py» в glob.
import pathlib
# определение пути
currentDirectory = pathlib.Path('.')
# определение шаблона
currentPattern = "*.py"
for currentFile in currentDirectory.glob(currentPattern):
print(currentFile)
Использование os.scandir()
В Python 3.6 добавлен новый метод scandir(), доступный из модуля os. Как понятно из названия он значительно упрощает получение списка файлов в каталоге.
Чтобы определить текущий рабочий каталог и сохранить его, инициализируем значение переменной path, для этого импортируем модуль os и вызовем функцию getcwd(). Далее, scandir() возвращает список записей для выбранного пути, которые проверяются на принадлежность файлу, используя метод is_file().
import os
# определение текущей рабочей директории
path = os.getcwd()
# чтение записей
with os.scandir(path) as listOfEntries:
for entry in listOfEntries:
# печать всех записей, являющихся файлами
if entry.is_file():
print(entry.name)
Вывод
Ведутся споры, какой вариант является лучшим, какой наиболее элегантным и какой является наиболее “питоничным”. Мне нравится простота метода os.walk(), а также модули fnmatch и pathlib.
Две версии с процессами/конвейером и итератором требуют более глубокого понимания процессов UNIX и знаний Python, поэтому они не могут быть предпочтительными для всех программистов из-за их дополнительной (и избыточной) сложности.
Чтобы найти ответ на этот вопрос, выберем самой быстрой из них, воспользовавшись удобным модулем timeit. Данный модуль подсчитывает время, прошедшее между двумя событиями.
Для сравнения всех решений без их изменений, воспользуемся функциональностью Python: вызовем интерпретатор с модулем timeit и соответствующим Python скриптом. Для автоматизации процесса напишем shell скрипт
#! /bin/bash
for filename in *.py; do
echo "$filename:"
cat $filename | python3 -m timeit
echo " "
done
Тесты проводились с использованием Python 3.6. Среди всех тестов os.walk() показала себя наилучшим образом. Выполнение тестов с помощью Python 2 возвращает разные значения, но os.walk() по-прежнему находится на вершине списка.