В какой из популярных операционных систем в именах файлов и папок учитывается регистр букв

Обновлено: 08.07.2024

Всегда старался давать осмысленные имена файлам, поэтому только сейчас заметил эффект (на win 7 и 8).


Рисунок 1. Файлы с именами, различающимися только регистром, считаются одноимёнными.


Рисунок 2. Невозможно задать файлу имя, отличающееся от уже имеющегося только регистром. (Предлагается модификация имени, путём конкатенации инкрементального счётчика.)

Это так всегда было? Можно где-то управлять чувствительностью ОС к регистру?

А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест? Ответ: Регистр в именах файлов Windows вроде всю жизнь в досе/винде регистр не имел значения, в никсах имел Arton (09.09.2015), impersonalis (09.09.2015), pax (10.09.2015), Phantom (09.09.2015), SBJoker (09.09.2015), St_AnGer (09.09.2015) Ответ: Регистр в именах файлов Windows

Да вроде всегда было, причём не только в винде регистр не учитывается, привык давно

Ответ: Регистр в именах файлов Windows

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

Да и имя файла - весьма техническая информация, регистр часто мешает восприятию большого объема данных.

Ответ: Регистр в именах файлов Windows

Ещё есть неприятный баг: если у меня есть файл "ололо.txt", а я его хочу переименовать в "Ололо.txt", то при попытке переименования ничего не происходит. Приходится переименовать сначала во что-то другое, а потом в нужное имя с желаемым регистром. Уже давно не исправляют, видимо, считают этот баг фичей.

ФС в Винде была всю жизнь регистронезависимой.
Возможность заставить WinFS/NTFS учитывать регистр есть (гуглится, например), но делать так на всех дисках компа чревато (многие проги по понятным причинам не найдут свои файлы и откажутся работать).
Как-то думал сделать себе раздел для вебчика-чепчика с регистрозависимыми именами, но потом просто завёл Linux.

Чувствительность к регистру определяет, обрабатываются ли прописные (FOO.txt) и строчные буквы (foo.txt) как уникальные (с учетом регистра) или эквивалентные (без учета регистра) в имени файла или каталога.

  • С учетом регистра: FOO.txt ≠ foo.txt ≠ Foo.txt
  • Case-без учета регистра: FOO. Text = foo.txt = Foo.txt

различия между Windows и учетом регистра Linux

при работе с файлами и каталогами Linux и Windows может потребоваться изменить способ обработки чувствительности к регистру.

  • Windows файловая система считает имена файлов и каталогов нечувствительными к регистру. FOO.txt и foo.txt будут считаться эквивалентными файлами.
  • Файловая система Linux обрабатывает имена файлов и каталогов с учетом регистра. FOO.txt и foo.txt будут рассматриваться как отдельные файлы.

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

это может быть особенно справедливо при подключении дисков к файловой системе подсистема Windows для Linux (WSL). При работе в файловой системе WSL вы используете Linux, поэтому файлы и каталоги по умолчанию обрабатываются как регистр.

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

Изменение чувствительности к регистру файлов и каталогов

ниже описано, как изменить каталог в файловой системе Windows так, чтобы он заменялся с учетом регистра, а также распознать файлы и папки, отличающиеся только регистром.

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

Проверить чувствительность к текущему регистру

чтобы проверить, учитывается ли регистр в каталоге в Windows файловой системе, выполните команду:

Замените на <path> путь к файлу. для каталога в файловой системе Windows (NTFS) <path> будет выглядеть так: C:\Users\user1\case-test или, если вы уже находится в user1 каталоге, можно просто запустить: fsutil.exe file setCaseSensitiveInfo case-test

Изменить чувствительность к регистру

поддержка учета регистра для каждого каталога началась в Windows 10, сборка 17107. в Windows 10 сборка 17692, поддержка была обновлена для включения проверки и изменения флага чувствительности к регистру для каталога из WSL. Чувствительность к регистру предоставляется с помощью расширенного атрибута с именем system.wsl_case_sensitive . Значение этого атрибута будет равно 0 для каталогов без учета регистра и 1 для каталогов с учетом регистра.

Чтобы изменить чувствительность каталога к регистру, необходимо запустить повышенные разрешения (Запуск от имени администратора). Изменение флага учета регистра также требует наличия разрешений "запись атрибутов", "Создание файлов", "Создание папок" и "Удаление вложенных папок и файлов" в каталоге. Дополнительные сведения об этом см. в разделе Устранение неполадок.

чтобы изменить каталог в Windows файловой системе так, чтобы он был чувствителен к регистру (foo ≠ FOO), запустите PowerShell от имени администратора и используйте команду:

чтобы изменить каталог в Windows файловой системы на значение по умолчанию без учета регистра (foo = foo), запустите PowerShell от имени администратора и выполните команду:

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

Наследование чувствительности к регистру

При создании новых каталогов эти каталоги будут наследовать учет регистра от родительского каталога.

При работе в режиме WSL 1 возникает исключение из этой политики наследования. Если распределение выполняется в режиме WSL 1, флаг учета регистра для каталога не наследуется; каталоги, созданные в каталоге с учетом регистра, автоматически не чувствительны к регистру. Необходимо явно пометить каждый каталог как чувствительный к регистру

Варианты чувствительности к регистру для подключения диска в файле конфигурации WSL

чувствительность к регистру можно управлять при подключении диска на подсистема Windows для Linux с помощью файла конфигурации WSL. Каждый установленный дистрибутив Linux может иметь собственный файл конфигурации WSL с именем /etc/wsl.conf . Дополнительные сведения о подключении диска см. в статье Начало работы с диском Linux в WSL 2.

Чтобы настроить параметр учета регистра в wsl.config файле при подключении диска, выполните следующие действия.

  1. Откройте дистрибутив Linux, который вы будете использовать (IE. Ubuntu).
  2. Перейдите в каталог вверх, пока не появится etc Папка (для этого может потребоваться доступ к cd .. home каталогу).
  3. перечислите файлы в etc каталоге, чтобы узнать, wsl.conf существует ли файл (используйте ls команду или explorer.exe . просмотрите каталог с помощью Windows проводника).
  4. Если wsl.conf файл еще не существует, его можно создать с помощью: sudo touch wsl.conf или, выполнив sudo nano /etc/wsl.conf , который создаст файл при сохранении из редактора nano.
  5. Для добавления в файл доступны следующие параметры wsl.config :

Значение по умолчанию: Включение учета регистра для каждого каталога.

Чувствительность к регистру недоступна (все каталоги на подключенных дисках NTFS будут учитываться без учета регистра):

Обрабатывать все каталоги на диске (NTFS) с учетом регистра:

Этот параметр поддерживается только для подключения дисков в дистрибутивах Linux, работающих как WSL 1, и может требовать ключ регистрации. Чтобы добавить ключ регистрации, можно использовать эту команду из командной строки с повышенными привилегиями (администратор): reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1 .

Чтобы эти изменения вступили в силу, необходимо перезапустить WSL после внесения каких либо изменений в wsl.conf файл. Вы можете перезапустить WSL с помощью команды: wsl --shutdown

Чтобы подключить диск (который использует подключаемый модуль файловой системы Дрвфс, чтобы сделать диск доступным в/mnt, например/МНТ/к,/МНТ/д и т. д.) с учетом конкретного параметра чувствительности к регистру для всех дисков, используйте, /etc/wsl.conf как описано выше. Чтобы задать параметры подключения по умолчанию для одного конкретного диска, используйте файл , чтобы указать эти параметры. Дополнительные параметры конфигурации WSL см. в статье Настройка параметров запуска дистрибутив с помощью вслконф.

Изменение чувствительности регистра на диске, подключенном к WSL распределению

Диски в формате NTFS, подключенные к дистрибутиву WSL, по умолчанию не учитывают регистр. Изменение чувствительности регистра для каталога на диске, подключенном к WSL дистрибутиву (IE. Ubuntu), выполните те же действия, которые перечислены выше для Windows файловой системы. (По умолчанию диски EXT4 будут учитываться с учетом регистра).

Чтобы включить чувствительность к регистру в каталоге (FOO ≠ foo), используйте команду:

Чтобы отключить чувствительность к регистру в каталоге и вернуться к регистру без учета регистра по умолчанию (FOO = foo), используйте команду:

При изменении флага с учетом регистра для существующего каталога для подключенного диска во время работы WSL убедитесь, что WSL не содержит ссылок на этот каталог, иначе изменение не вступит в силу. Это означает, что каталог не должен быть открыт какими-либо процессами WSL, включая использование каталога (или его потомков) в качестве текущего рабочего каталога.

Настройка чувствительности к регистру с помощью Git

Система управления версиями Git также имеет параметр конфигурации, который можно использовать для настройки чувствительности к регистру для файлов, с которыми вы работаете. Если вы используете Git, может потребоваться изменить git config core.ignorecase параметр.

Чтобы задать для Git регистр с учетом регистра (FOO.txt ≠ foo.txt), введите:

git config core.ignorecase false

Чтобы задать для Git регистр без учета регистра (FOO.txt = foo.txt), введите:

git config core.ignorecase true

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

Диагностика

мой каталог содержит файлы с учетом регистра и требует учета регистра, но Windows средствам FS не будут распознавать эти файлы

чтобы использовать Windows средствах файловой системы для работы с каталогом Linux, который содержит файлы с разными вариантами, необходимо создать новый каталог с учетом регистра, а затем скопировать файлы в этот каталог (с помощью клона git или распаковать). Файлы останутся в смешанном регистре. (Обратите внимание, что если вы уже пробовали переместить файлы в каталог без учета регистра и возникли конфликты, скорее всего, некоторые файлы были перезаписаны и больше не будут доступны.)

Ошибка: Каталог не пуст

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

Одна из особенностей операционной системы Windows заключается в том, что Windows не делает различия между верхним и нижнем регистром в именах файлов и папок. Это позволяет достаточно сильно упростить навигацию для обычных пользователей. Тем не менее, эта же техническая особенность иногда порождает довольно странные ситуации.

Примечание : Отчасти, введение регистронезависимости вполне логично, так как слова отличаются друг от друга по набору букв в них, а не по их регистру.

Например, легко может произойти следующая ситуация:

"Вы создаете папку в (Мои) Документы. Называете ее в нижнем регистре. Замечаете, что так каталог становится плохо читаемым, среди остального списка. Открываете проводник и пытаетесь поменять первую букву с нижнего регистра на верхний. Но, как только вы попытаетесь сохранить название, первая буква снова станет в нижнем регистре".

Происходит это по той причине, что для Windows каталог с именем "Мой Каталог" и каталог "мой каталог" обозначают одно и то же. Поэтому не удивляйтесь, что при попытках изменить регистр, Windows может просто вас проигнорировать. Чтобы обойти это ограничение, вы всегда можете использовать одну уловку:

  1. Добавьте к имени файла или папки любой символ, чтобы полноценно изменить имя
  2. Затем, при переименовании, удалите добавленный символ и измените регистр букв так, как вы хотите

Теперь изменение регистра должно примениться.

Если вам не хочется возиться с переименованием и у вас есть опыт редактирования реестра , то вы можете сделать имена файлов и каталогов регистрозависимыми. И вот как это делается:

  1. Откройте regedit
  2. Перейдите к следующему ключу:
    • HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Advanced
  3. В правой части окна, дважды кликните на параметре DontPrettyPath (если такого параметра не существует, то создайте его с типом REG_DWORD)
  4. Установите значение в "1" (без кавычек)
  5. Нажмите "ОК"
  6. Закройте regedit
  7. Перезагрузите систему или выйдите и снова зайдите

Теперь регистр букв в именах файлов и папок будет оставаться таким, каким вы его вводите. Данный способ применим для Windows XP / Vista / 7.

Стоит отметить, что многие Unix системы, такие как Linux и FreeBSD, являются регистрозависимыми в полном смысле. Т.е. файл с именем "Мой Файл" и файл "мой файл" будут совершенно разными файлами. Эта особенность наиболее ярко выражена в интернете.

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

Теперь вы знаете как сделать регистрозависимые имена файлов и папок в Windows. А так же знаете почему эта проблема возникает, и как ее можно решить в любой ситуации.

Регистр в именах файлов и папок

Содержание статьи:

Активировать функцию распознавания регистра вам поможет команда fsutil.exe. Главным нюансом ее использования является необходимость таргетного применения. Это означает, что атрибут распознавания нужно применять к каждой папке индивидуально. То есть, если вы хотите настроить пути Projects и Documents, с каждым из них придется работать отдельно.

Важно отметить:
Изменения пути C:\Program Files\”projects” не затрагивают внутренние файлы и папки. Поэтому внутри директории projects правила регистра остаются неизменными.

Включение функции распознавания регистра инструментами Windows

Таким образом, в Windows 10 не играет роли какое приложение вы используете: CMD или Windows PowerShell. Выбор зависит только от личных предпочтений.

Как включить функцию распознавания регистра

1. Определите папку с которой предстоит работать и путь к ней. Для примера мы рассмотрим папку documents, расположенную по пути C:\documents.

Папка documents

2. Откройте Windows PowerShell от имени администратора. Сделать это можно щелкнув правой кнопкой мыши по иконке меню Пуск и найдя в появившемся окне соответствующую утилиту.

3. Введите команду fsutil.exe file setCaseSensitiveInfo C:\documents enable и нажмите Enter.
Замените часть “C:\documents” на путь к вашей папке.

Windows PowerShell

4. Теперь вы можете создать две папки Documents с разными регистрами.

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

1. Откройте Windows PowerShell от имени администратора.

2. Введите команду fsutil.exe file setCaseSensitiveInfo C:\documents disable и нажмите Enter.
Замените часть “C:\documents” на путь к вашей папке.

Отключение функции распознавания регистра

Как проверить чувствительность папки к регистру

Если вы часто пользовались данной функцией, вполне возможно, что уже возникла некоторая путаница. Иногда бывает тяжело с ходу определить какая папка редактировалась, а какая нет. Поэтому, чтобы не создавать лишней мороки и поисков, рекомендуем воспользоваться простым руководством, которое менее чем за минуту позволит вам проверить статус директории.

1. Откройте Windows PowerShell от имени администратора.

2. Введите команду fsutil.exe file queryCaseSensitiveInfo C:\documents и нажмите Enter.
Замените часть “C:\documents” на путь к вашей папке.

Проверка чувствительности папки к регистру

3. Результатом станет отображение текущего статуса папки.

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

Настройка распознавания регистров подсистемы Windows в Linux

Причиной всему является файловая система DrvFs, которая использует атрибут чувствительности к регистру под названием case=dir. Он же и задает особенности среды Linux в системе NTFS Windows. При желании, вы можете отключить распознавание регистров в файле wsl.conf.

Благодаря особенностям операционной системы Linux, вам не потребуется помощь fsutil.exe в создании уникальных параметров папок и файлов.

Free Download for PC

Похожие статьи про восстановление данных:

Скрытый системный файл

Как восстановить скрытый системный файл Windows после удаления

Под отметку “системный файл” попадает каждый документ Windows, относящийся к категории драйверов, ди.

Мало места на диске

Если у вас заполнен мультимедийный диск и вы не хотите терять любимые фильмы, вас заинтересует руков.

Как скрыть или отобразить разделы параметров?

В этой статье мы рассмотрим два способа, которые позволят вам не только восстановить отображение скр.

Читайте также: