Есть ли способ сохранить косую черту в имени файла?

2154
Den

Есть ли способ иметь косую черту "/" в имени файла? «Настоящий» слеш, а не какой-то другой символ Юникода. Файловая система должна быть FAT16 / 32 и Ext4.

0
Если бы вы могли, как бы вы использовали это? Как бы вы сказали, что хотите открыть файл "a / b", а не файл "b" в каталоге "a"? David Schwartz 11 лет назад 0
Избегайте его с обратной косой черты, как для других специальных персонажей. Это работает для * и? ... Пример: "a \ / b" Den 11 лет назад 0
Это на самом деле не помогает. Как бы вы сказали, означает ли «a \ / b» файл «a \ / b» или файл «b» в каталоге «a \»? Обратная косая черта является допустимым символом в имени файла. В принципе невозможно иметь что-то, что является разделителем каталогов, но также допускает каждую возможную последовательность в имени файла. Некоторая последовательность должна быть запрещена в имени файла, чтобы однозначно использоваться в качестве разделителя каталогов. David Schwartz 11 лет назад 0

1 ответ на вопрос

4
Dennis

ext4

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

FAT16 / 32

FAT16 / 32 /изначально не поддерживает, но длинные имена файлов (LFN) поддерживают .

Однако драйверы LFN в Windows, Linux, Unix, MS-DOS, OS / 2 и, возможно, других операционных системах не позволяют /быть частью LFN. Даже если бы вы могли создать такой файл с другой ОС, вы, скорее всего, не смогли бы получить к нему доступ с помощью этих операционных систем.

Источник: Сравнение файловых систем - Википедия

`> FAT не поддерживает / изначально, но длинные имена файлов (LFN) поддерживают. Да? Где это говорит, что FAT поддерживает` / `? `oO``> Даже если бы вы могли создать такой файл с другой ОС, вы, скорее всего, не смогли бы получить к нему доступ с помощью этих операционных систем. Это правильно. В прошлом я проводил эксперименты, в которых я использовал hex-редактор для непосредственного изменения имен файлов в записях каталогов, и хотя я мог * просматривать * списки каталогов, DOS и Windows (и, конечно, программы) обычно отказывались от всего, что содержало недопустимые символы. Некоторые могут быть переименованы с использованием подстановочных знаков, некоторые - нет. Synetech 11 лет назад 0
@Synetech: я сказал, что FAT ** не ** поддерживает `/`. Я что-то неправильно понимаю? Dennis 11 лет назад 0
Вы сказали, что `/` можно использовать в длинных именах файлов, но я никогда не видел ничего подобного. LFN (т. Е. VFAT) поддерживает несколько символов, которые обычному FAT не нравятся `+` и `" `, но в последний раз я проверял,` / `не является одним из них. Вы обращались к плагину файловой системы или что-то? Synetech 11 лет назад 0
Согласно статье в Википедии, на которую я ссылался, VFAT LFN поддерживает все символы Юникода, кроме NUL. Но это, вероятно, относится к текущей спецификации (я не могу ее найти), поэтому это утверждение будет верным, если бы не было реальной реализации, которая поддерживает все эти символы. Dennis 11 лет назад 0
@Synetech после некоторых ошибок в файле FAT 32, теперь у меня есть файл с косой чертой в имени (но, к сожалению, совершенно не связанный с тем, где я хочу его иметь). И да, я ничего не могу с этим сделать. Это включает, я не могу удалить это. Как вы редактировали каталоги с помощью hex-редактора? Den 11 лет назад 0
«Согласно статье в Википедии, на которую я ссылался, VFAT LFN поддерживает все символы Unicode, кроме NUL». FAT32 не поддерживает косую черту, двоеточие, звездочку и т. Д. Вы неправильно понимаете, что это означает: он поддерживает символы * Unicode *, такие как китайские символы, арабские буквы, рисование прямоугольников и т. Д., А не недопустимые символы, используемые для разделителей файловой системы. Конечно, можно случайно / вручную создать такие имена файлов, но они не будут доступны для чтения всем (ОС, программам и т. Д.), Которые поддерживают спецификацию FAT. Synetech 11 лет назад 0
@ Ден, ты пробовал вместо этого использовать подстановочный знак? Например, если ваше имя файла `foo / bar.txt`, попробуйте использовать команду типа` ren foo * .txt blah.txt` или `del foo? Bar.txt` Synetech 11 лет назад 0
@Synetech: [спецификация FAT32] (http://msdn.microsoft.com/en-us/library/windows/hardware/gg463080.aspx) специально не разрешает эти символы, но и не запрещает их. Поэтому я рассматриваю имена файлов, содержащие символы thosde, так же, как имена устройств (например, lpt1): запрещено ОС, а не файловой системой. Я создал файлы (с `dd` и шестнадцатеричным редактором), содержащие двоеточия и косые черты. Windows может получить доступ к обоим файлам, используя их краткое имя. Ubuntu даже обрабатывает двоеточие в графическом интерфейсе, но, очевидно, задыхается от косой черты. Dennis 11 лет назад 0
@Synetech: Да, я пробовал подобные вещи. Я всегда получаю «Нет такого файла или каталога» Den 11 лет назад 0
@Den: у файла есть косая черта в его имени файла 8.3? Если это не так, выполните `dir / x`, чтобы увидеть короткое имя файла (например,` foobar ~ 1.baz`), и используйте его для удаления файла. Dennis 11 лет назад 0