Jump to content

Задача по поиску файлов


Recommended Posts

У меня возник вопрос примерно следующего содержания: как можно найти на компьютере использующем XP, файлы, в именах которых содержатся два (три, или четыре, или больше) пробела подряд? А также, как найти файлы, чьё имя заканчивается на пробел, или начинается на него?

Link to comment
Share on other sites

Реализация такого поиска возможна при помощи total comander[a]. В его встроенном поисковике следует набрать нужное колличество пробелов (только их (!) - иначе он найдет абсолютно все файлы в заданом секторе поиска).

Необходимую (и дополнительную) информацию о методах поиска total comander[a] можно найти в меню поиска.

Link to comment
Share on other sites

А также, как найти файлы, чьё имя заканчивается на пробел, или начинается на него?

Интересно, а как вы собираетесь создать такой файл? Windows по-умолчанию уберет пробелы в начале и конце файла...

что касаемо остального - либо стандартный for, либо более удобный forfiles (внешняя утилита) помогут (как пример, команда forfiles /M "* *" как раз выведет список файлов и папок текущего каталога с 2 пробелами в имени, более подробно: forfiles /?)

Link to comment
Share on other sites

Maikll, вынужден не согласится....

ДА винда уберает пробел с начала и с конца, но если файл содержит с начала имени или в конце более одного пробела пробелы остаются (правда по одному убираются)...

К примеру: можно создать файл имя которого состоит из 3 пробелов или так: " a b .txt"

Как подтверждение моих слов...Вот

Link to comment
Share on other sites

ДА винда уберает пробел с начала и с конца, но если файл содержит с начала имени или в конце более одного пробела пробелы остаются (правда по одному убираются)...

К примеру: можно создать файл имя которого состоит из 3 пробелов или так: " a b .txt"

В начале имени средствами total comander или иного файлового менеджера - вполне возможно, explorer-oм - нет.

Добавить пробелы в конец файла после расширения - нельзя по определению.

Link to comment
Share on other sites

В начале имени средствами total comander или иного файлового менеджера - вполне возможно, explorer-oм - нет.

Добавить пробелы в конец файла после расширения - нельзя по определению.

Согласен, но к примеру некоторые издательские программы позволят сохранять файл с подобным- пробельным именем. Как не странно, но подобные имена часто используются в издательстве (очень много графических файлов разных рангов - дизанер или верстальщик пользуется для обозначения "клипарта"- один пробел, "на утверждение" - 2 пробела, "спуск на ФНА" - без пробела)

Например этот файл...

Link to comment
Share on other sites

файл имя которого состоит из 3 пробелов или так: " a b .txt"
Это не файл с именем из трех пробелов, это файл с тремя пробелами в имени. Имя файла только с пробелами создать не удастся, разве что можно использовать символы, выглядящие как пробелы, например, Alt+255 (на малой клавиатуре). Создать файл с пробелами в начале имени можно командой copy, например,
copy nul "	.   a"

но в конце имени пробелы все равно самоликвидируются.

P.S. Имеется в виду "в конце полного имени", т.е. после последнего непробела в расширении.

Link to comment
Share on other sites

...можно использовать символы, выглядящие как пробелы, например, Alt+255 (на малой клавиатуре)...
Не поспоришь... но существование таких файлов возможно... а значит и поиск нужных "пробельных" файлов то же возможен (это я о теме :bye1: )...
Оффтоп: С "этими"файлами сталкиваюсь довольно часто на работе... до меня на тепершнем моем компе работал товарищ очень любивший такие изыскания. Самое печальное заключается в отсчитывании пробелов для определения ранга файла... :blushing: "
Link to comment
Share on other sites

ДА винда уберает пробел с начала и с конца, но если файл содержит с начала имени или в конце более одного пробела пробелы остаются (правда по одному убираются)...

Создал для пробы текстовый файл и вставил в конец (до расширения) пробелы (5 шт.)... Ничего винда не убрала. Ни одного пробела.

По вашему вопросу: в имени файла ведь имеются и другие знаки, кроме пробелов. Используйте для поиска их. Поиск выдаст все файлы, которые содержат данное сочетание. А если известно расширение файла, то список сокращается в разы!

P.S. Я что-то не пойму в чем загвоздка?

P.S.2. Попробовал усложнить задачу. Создал файл 1 2 3.txt Ввел в поиск: 1 2 3 - выдал только этот файл. ввел 123 - ничего не выдал.

В ЧЕМ ВАША ПРОБЛЕММА? Обычный виндовский поиск прекрасно справляется.

Edited by matva
Link to comment
Share on other sites

Ну хорошо, Total Commander ищет пробелы.

Но вот пробелы в конце имени файлов (до точки, отделяющей разрешение) как искать (или в начале имени - без разницы)? Не обязательно два или больше пробелов, важно чтобы они были в конце или в начале имени.

Link to comment
Share on other sites

Еще раз повторю: В чем Ваша проблемма? Ищите по другим знакам! Искать только по пробелам - глупо (ИХМО!).

P.S. А тех кто написал такие программы, которые создают файлы с N-ми пробелами - :)

Link to comment
Share on other sites

Все таки нашел как это сделать в totalcmd....

Поиск файлов имя которого начинается или заканчивается на пробел делается так: \s*\s.*, где "\s" - указатель регулярного выражения пробела...

Пользуйтесь :)

Link to comment
Share on other sites

Может я чего не так делаю, но на указанное выражение, Total Commander выдаёт не те файлы. Точно это выражение?

\s*\s.*

Может галку надо было поставить где-то? В любом случае результат, чего-то, не совсем тот.

Есть ещё тэг \b указывающий на границу (т.е. на начало или конец), но он странно, тоже не работает.

Link to comment
Share on other sites

\s*\s.*, где "\s" - указатель регулярного выражения пробела...
Я с регулярными выражениями в Total Commander не разбирался, но это, по объяснению, не имена ли с двумя пробелами - в начале имени и перед расширением?

Пути решения без каких-то исключений не видно или над этим надо сидеть и проверять варианты, но в командной строке

dir /b/s " *" | find "."

найдет все файлы, имена которых начинаются с пробела и имеют какое-нибудь расширение. Поиск начнется с текущего каталога, а чтобы шел с корневого каталога диска, после dir надо вставить \ (впрочем, об этом навряд ли стоит упоминать, не новички). А

dir /b/s "* .*" | find "."

найдет все файлы, имена которых заканчиваются пробелом перед расширением. Хотя обе эти команды выдадут и имена каталогов, содержащие точки.

P.S. Впрочем, от имен каталогов с точками внутри, видимо, можно отделаться, добавив в конце команд еще один фильтр | find /v ">"

Edited by Тролль
Link to comment
Share on other sites

Может галку надо было поставить где-то? В любом случае результат, чего-то, не совсем тот.
Прошу прощения, да, забыл указать, что в меню поиска totalcmd надо поствить галку "регулярные выражения"

Для наглядности...

serch93910.jpg

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...