Обнаружены ошибки в файле преобразования к верхнему регистру

Обновлено: 05.07.2024

У меня есть большое количество файлов в формате x00000.jpg , X00000.jpg и xx00000.jpg .

Как я могу переименовать эти файлы так, чтобы все они были прописными, игнорируя числовую часть имени?

Мне нужно изменить имя таблицы со строчного на верхний регистр, но с помощью этого оператора имя таблицы может быть изменено, но имена написаны в нижнем регистре.. sql> rename table name to Name; есть ли какой-нибудь способ преобразовать имя таблицы в верхний регистр?

Я пытаюсь переименовать все каталоги и файлы в верхний регистр с помощью скрипта shell. То, что у меня есть, работает, но не для подкаталогов. Поскольку имена каталогов меняются во время выполнения скриптов, я получаю такие вещи, как mv: cannot stat './def/two/three': No such file or directory Я.

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

Если Perl разрешено:

Если разрешено Python:

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

Если AWK, ls и mv разрешены:

Если у вас много файлов, приведенные выше решения не работают, потому что *.jpg расширяется до слишком длинного списка аргументов (ошибка: список аргументов слишком длинный ).

Если разрешены tr и mv , то см. Ответ дамьена франсуа.

Если mv разрешено:

Пожалуйста, обратите внимание, что они переименовывают .jpg в .JPG в конце, но вы можете изменить их, чтобы избежать этого.

bash shell имеет синтаксис для перевода имени переменной во все заглавные буквы.

Я думаю, что это может быть довольно новая функция, поэтому сначала убедитесь, что ваша версия bash реализует ее. Чтобы избежать ошибок, попробуйте один раз заменить mv на echo mv , просто чтобы убедиться, что он будет делать то, что вы хотите.

Документация по этой функции находится здесь , или введите info bash и найдите "upper".

Вероятно, вам следует решить, что делать, если целевой файл уже существует (скажем, если уже существуют x00000.jpg и X00000.JPG ), если вы не уверены, что это не проблема. Чтобы обнаружить такие коллизии имен, вы можете попробовать:

и ищите любые строки, не начинающиеся с 1 .

Вероятно, самый простой способ переименования нескольких файлов-это использование rename . Чтобы перевести имена в нижнем регистре в верхний, вам нужно:

Если файлы также находятся в поддирах, вы можете использовать globstar или find :

Рекомендации

Я прочитал довольно много вопросов здесь и на interwebz, однако мое переименование файлов все еще не работает. У меня есть куча файлов, которые начинаются следующим образом: libraryVCE_KM_LIBRARY_SUMARY_S. Я хочу удалить первый экземпляр библиотеки, поэтому запускаю эту команду в linux: rename.

OUTPUT:

Если вам нужно только переименование файлов/dirs, вы можете использовать rnm :

  1. -rs : заменить строку. /./\C/g заменяет все совпадения . (regex) в верхнем регистре.
  2. -fo : режим только для файлов
  3. -dp : глубина каталога (-1 означает неограниченную).

Другие примеры можно найти здесь .

Похожие вопросы:

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

Есть ли переносимый способ преобразовать строку UTF-8 в C в верхний регистр? Если нет, то каков Linux способ сделать это?

Мне нужно изменить имя таблицы со строчного на верхний регистр, но с помощью этого оператора имя таблицы может быть изменено, но имена написаны в нижнем регистре.. sql> rename table name to Name;.

Я пытаюсь переименовать все каталоги и файлы в верхний регистр с помощью скрипта shell. То, что у меня есть, работает, но не для подкаталогов. Поскольку имена каталогов меняются во время выполнения.

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

Я хотел бы выполнить поиск следующего regex: [ag][ag]aag[acg] и преобразовать только все совпадение в верхний регистр, но не индивидуальный поиск a или g. я попробовал sed.

let header=myWordDDam. преобразуйте вышеприведенное слово в output= My Word DDam. Попробовал использовать regex let output=header.replace(/^./, header[0].toUpperCase()).split(/(?=[A-Z])/).join( );.

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

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

  • Отключите или отсоедините все съемные и внешние накопители.
  • Перезагрузите компьютер.
  • Подождите, пока не появится окно статуса BIOS. Это будет либо окно с логотипом производителя (например, Dell), либо черный экран с белыми надписями, содержащими техническую информацию.
  • Нажмите и держите кнопку «F8» как только окно BIOS исчезнет. Это вызовет меню «Advanced Boot Options».
  • Выберите пункт «Repair your computer». Выполнится загрузка среды восстановления Windows 7.
  • Выберите схему клавиатуры из выпадающего списка.
  • Загрузитесь, используя учетную запись администратора, если это необходимо. Появится окно «Параметры восстановления системы».
  • Нажмите на кнопку «Командная строка».
  • Введите «bootrec/fixmbr» без кавычек.
  • Подождите завершения процесса и перезапустите компьютер, чтобы проверить, заработал ли он. Если нет, повторите шаги 2-8 и перейдите к следующему шагу.
  • Введите в командной строке «bootrec/fixboot» без кавычек.
  • Подождите завершения процесса и перезапустите компьютер, чтобы проверить, заработал ли он. Если нет, повторите шаги 2-8 и перейдите к следующему шагу.
  • Введите в командной строке «bootrec/RebuildBcd» без кавычек. Если это не помогло, то, вероятно, диск невозможно восстановить и требуется полное форматирование диска и переустановка операционной системы.

Подсказки и предупреждения :
Если опция «Repair your computer» не доступна, необходимо получить диск Windows 7 от производителя компьютера.

Восстановление разделов и информации на HDD


Внимание! Если у Вас возникли проблемы с доступом к информации на дисках большого объема (более 120 Гб) - пропала таблица разделов, система говорит, что нужно отформатировать диск и т.п., то сначала прочитайте эту ветку про LBA48.

- перед использованием программ типа Partition Magic всегда сохраняйте резервные копии важных данных
- не забывайте проверять диски на ошибки и дефрагментировать их (может помочь позже, при восстановлении данных)
- не пытайтесь изменять разделы на дисках с ошибками или на которых имеются сбойные блоки
- на время правки разделов постарайтесь обеспечить бесперебойную работу компьютера
- никогда не прерывайте процесс изменения разделов, если он уже начался
- не проводите операций по изменению разделов на дисках забитых до отказа, т.к. это значительно увеличивает продолжительность таких операций, а следовательно и риск возникновения сбоев

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

Обращаясь в тему за помощью, обязательно укажите информацию о диске: тип, емкость, способ подключения, информацию о разделах, SMART винта из MHDD / Victoria / HDDScan , наименование и мощность БП, возраст БП, результаты MemTest86 , версию ОС и сервис-пака, а также обстоятельства краха - честное слово, толковым запросам и отвечать приятно. Здесь телепатов нет.

Попробуйте Поиск NTFS в DMDE и заходите в найденные разделы. Размеры файлов не нулевые, так что шанс есть, хотя и далекий от 100%.

HDD Regenerator советуете?

Добавлено:
Как я понел для этого требуется


kenny5705
А что говорит chkdsk.exe БукваРаздела: в Винде?

Проверка файлов (этап 1 из 3).
Проверка файлов завершена.
Проверка элементов индекса, соответствующих файлу 3824, не будет
выполнена, так как этот файл содержит слишком много имен файлов.
Проверка индексов (этап 2 из 3).
Исправление ошибки в индексе $I30 файла 5.
Исправление ошибки в индексе $I30 файла 5.
Сортировка индекса $I30 файла 5.
Удаление элемента индекса $O файла 25.
Удаление элемента индекса $O файла 25.
Удаление элемента индекса $O файла 25.
Вставка элемента в индекс $O файла 25.
Проверка индексов завершена.
Восстановление потерянных файлов.
Восстановление потерянного файла $MFT (0) в файле каталога 5.
Восстановление потерянного файла $MFTMirr (1) в файле каталога 5.
Восстановление потерянного файла $LogFile (2) в файле каталога 5.
Восстановление потерянного файла $Volume (3) в файле каталога 5.
Восстановление потерянного файла $AttrDef (4) в файле каталога 5.
Восстановление потерянного файла . (5) в файле каталога 5.
Восстановление потерянного файла $Bitmap (6) в файле каталога 5.
Восстановление потерянного файла $Boot (7) в файле каталога 5.
Восстановление потерянного файла $BadClus (8) в файле каталога 5.
Восстановление потерянного файла $Secure (9) в файле каталога 5.
Восстановление потерянного файла $UpCase (10) в файле каталога 5.
Восстановление потерянного файла $Extend (11) в файле каталога 5.
Восстановление потерянного файла !Music (35) в файле каталога 5.
Восстановление потерянного файла $RECYCLE.BIN (37) в файле каталога 5.
Восстановление потерянного файла backup (38) в файле каталога 5.
Восстановление потерянного файла SYSTEM

1 (42) в файле каталога 5.
Восстановление потерянного файла System Volume Information (42) в файле каталога
5.
Восстановление потерянного файла msdownld.tmp (48) в файле каталога 5.
Восстановление потерянного файла drv_hidden_part.tbi (50) в файле каталога 5.
Восстановление потерянного файла DRV_HI

1.TBI (50) в файле каталога 5.
Восстановление потерянного файла !IMG (68) в файле каталога 5.
Восстановление потерянного файла RECYCLER (75) в файле каталога 5.
Восстановление потерянного файла !Soft (80) в файле каталога 5.
Восстановление потерянного файла !Books (618) в файле каталога 5.
Восстановление потерянного файла !Films (1018) в файле каталога 5.
Восстановление потерянного файла !SETUP

1 (1034) в файле каталога 5.
Восстановление потерянного файла !Setup_Games (1034) в файле каталога 5.
Восстановление потерянного файла !Games (1035) в файле каталога 5.
Восстановление потерянного файла !Other (1079) в файле каталога 5.
Восстановление потерянного файла Thumbs.db (1168) в файле каталога 5.
Восстановление потерянного файла TOTALCMD.lnk (1302) в файле каталога 5.
Восстановление потерянного файла REMOVE_THIS_FILE.livecd.swap (3824) в файле кат
алога 5.
Восстановление потерянного файла data.tag (3835) в файле каталога 5.
Восстановление потерянного файла .Trash-1000 (4415) в файле каталога 5.
Восстановление потерянного файла .Trash-500 (4511) в файле каталога 5.
Проверка дескрипторов безопасности (этап 3 из 3).
Проверка дескрипторов безопасности завершена.
CHKDSK проверяет журнал USN..
Завершена проверка журнала USN
Исправление ошибок в зеркальной копии основной таблицы файлов.
Исправление ошибок в файле преобразования к верхнему регистру.
Windows сделала изменения в файловой системе.

56677288 КБ всего на диске.
40804108 КБ в 4079 файлах.
1788 КБ в 334 индексах.
0 КБ в поврежденных секторах.
72460 КБ используется системой.
65536 КБ занято под файл журнала.
15798932 КБ свободно на диске.

Размер кластера: 4096 байт.
Всего кластеров на диске: 14169322.
3949733 кластеров на диске.

После, и системы грузятся.
Может проблемы с началами и концами разделов из за того что от NTFS раздела с установленной виндой отсекался ext?

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

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

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

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