Имя файла windows linux

Ограничение на название файла

При переносе файла с windows в linux столкнулся с проблемой при копировании, слишком длинное имя файла (файловая система ext4), можно каким либо образом обойти данное ограничение? При том если бы данный файл был один можно было бы переименовать, но таких файлов больше 500, и как бы не вариант.

Это одна из наболевших проблем.

VFS уже поддерживает более длинные имена, но во многих ФС всё ещё однобайтная длинна. Если надо имена и не использовать виндовые ФС, то можно попробовать другие FUSE ФС, или «починить» ReiserFS в ядре.

Можно переименовать все файлы однострочным скриптом.

Xenius ★★★★★ ( 09.10.18 17:52:08 MSK )
Последнее исправление: Xenius 09.10.18 17:52:47 MSK (всего исправлений: 1)

а) вместо ext4 используй reiserfs, б) вместо хрюникода поставь однобайтную локаль.

Ну, а можно на лету переименовать в транслит:

cat ~/bin/rename_translit #!/bin/sh # this script has been written by Eddy # # rename_translit --- переводит русские имена файлов в транслит # # Создан 22-го Май 2006 года в 9:24 # rmspaces for Name in `ls -1` do Newname=`echo "$Name"|enconv|sed -e \ "y/йукенгзхъфывапролдэсмитьбЙУКЕНГЗХЪФЫВАПРОЛДЭСМИТЬБ/jukengzh'fyvaproldesmit'bJUKENGZH'FYVAPROLDESMIT'B/"\ -e "s/ц/tz/g" \ -e "s/ш/sh/g" \ -e "s/щ/sch/g" \ -e "s/ж/zh/g" \ -e "s/ч/ch/g" \ -e "s/ю/yu/g" \ -e "s/я/ya/g" \ -e "s/ё/yo/g" \ -e "s/Ё/YO/g" \ -e "s/Ц/TZ/g" \ -e "s/Ш/SH/g" \ -e "s/Щ/SCH/g" \ -e "s/Ж/ZH/g" \ -e "s/Ч/CH/g" \ -e "s/Ю/YU/g" \ -e "s/?/_/g" \ -e "s/Я/YA/g"` if [ "$Name" != "$Newname" ]; then mv "$Name" "$Newname" echo -e "$Name -> $Newname \r\c" fi if [ -d "$Newname" ]; then cd "$Newname" 2>/dev/null if [ $? == 0 ]; then echo -e "\n\nDiving into $Newname" rename_translit cd ../ fi fi done 

А вообще, лучше никогда не использовать в именах файлов запрещенные символы (спецсимволы и символы вне таблицы ASCII).

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

Источник

Настройка учета регистра

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

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

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

  • Файловая система Windows обрабатывает имена файлов и каталогов без учета регистра. FOO.txt и foo.txt будут рассматриваться как эквивалентные файлы.
  • Файловая система Linux обрабатывает имена файлов и каталогов с учетом регистра. FOO.txt и foo.txt будут рассматриваться как отдельные файлы.
Читайте также:  Linux find file by name in directory

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

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

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

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

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

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

Проверка конфиденциальности текущего регистра

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

fsutil.exe file queryCaseSensitiveInfo

Замените своим путем к файлу. Для каталога в файловой системе Windows (NTFS) будет выглядеть следующим образом: 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 от имени администратора и используйте команду :

fsutil.exe file setCaseSensitiveInfo enable 

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

fsutil.exe file setCaseSensitiveInfo disable 

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

Читайте также:  Linux desktop environment install

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

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

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

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

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

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

  1. Откройте дистрибутив Linux, который вы будете использовать (т. е. 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.conf файл следующие параметры:

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

[automount] options = case = dir 

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

[automount] options = case = off 

Рассматривайте все каталоги на диске NTFS с учетом регистра: force

[automount] options = case = force 

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

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

Чтобы подключить диск (который использует подключаемый модуль файловой системы DrvFs, чтобы сделать диск доступным в разделе /mnt, например /mnt/c, /mnt/d и т. д.) с определенным параметром конфиденциальности регистра для ВСЕХ дисков, используйте /etc/wsl.conf , как описано выше. Чтобы задать параметры подключения по умолчанию для одного конкретного /etc/fstab диска, используйте файл для указания этих параметров. Дополнительные параметры конфигурации WSL см. в статье Настройка параметров запуска каждого дистрибутива с помощью wslconf.

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

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

Читайте также:  Изменение владельца файла линукс

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

fsutil.exe file setCaseSensitiveInfo enable 

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

fsutil.exe file setCaseSensitiveInfo disable 

Если вы измените флаг с учетом регистра в существующем каталоге для подключенного диска во время работы 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 clone или untar). Файлы останутся смешанными. (Обратите внимание, что если вы уже пытались переместить файлы в каталог без учета регистра и возникли конфликты, скорее всего, некоторые файлы были перезаписаны и больше не будут доступны.)

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

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

Ошибка: отказано в доступе

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

Окна свойств для просмотра или изменения разрешений в каталогах NTFS

Ошибка: для этой операции требуется локальный том NTFS

Атрибут учета регистра можно задать только для каталогов в файловой системе с форматом NTFS. Каталоги в файловой системе WSL (Linux) по умолчанию чувствительны к регистру (и не могут быть настроены как без учета регистра с помощью средства fsutil.exe).

Дополнительные ресурсы

Источник

Оцените статью
Adblock
detector