Допустимые символы в имени файла [закрыто]

Где я могу найти список разрешенных символов в именах файлов в зависимости от операционной системы? (например, в Linux символ : разрешено в именах файлов, но не в Windows)


Вы должны начать со страницы имени файла Википедии. В нем есть таблица приличного размера (Сравнение ограничений имен файлов), в которой перечислены зарезервированные символы для довольно большого количества файловых систем.

В нем также есть множество других информация о каждой файловой системе, включая зарезервированные имена файлов, такие как CON в MS-DOS. Я упоминаю это только потому, что однажды меня укусило, когда я сократил включаемый файл с const.h до con.h и потратил полчаса на выяснение почему компилятор завис.

Оказывается, DOS проигнорировал расширения для устройств, поэтому con.h был точно таким же, как con , консоль ввода (то есть, конечно, компилятор ждал, пока я наберу заголовочный файл, прежде чем он продолжит работу).


42

Хорошо, так что смотрите Сравнение файловых систем, если вы заботится только о файловых системах основных проигрывателей:

  • Windows (FAT32, NTFS): любой Unicode, кроме NUL , , /, : , * , ", , > , | . Кроме того, без пробела в начале или в конце и без точки в конец.
  • Mac (HFS, HFS +): любой допустимый Unicode, кроме : или /
  • Linux (ext [2-4]): любой байт, кроме NUL или /

поэтому любой байт, кроме NUL , , /, : , * , ", , > , | и у вас не может быть файлов/папок для вызова . или .. и без управляющих символов (конечно).

Улучшите этот ответ
отредактировал 17 мая ’20 в 22: 05
Эндрю D. Bond
7311 серебряных знаков44 бронзовых знака
ответил 12 фев. 0:19
  • 8
    Это неверно. Linux не разрешает /. Windows не поддерживает обратную косую черту и некоторые строки (например, CON ). — kgadek 23 марта ’17 в 17:42
  • 9
    да, поэтому я сказал кроме . — CpILL, 15 мая ’17, 17:33
  • 3
    На Mac (с запущенной HFS +) я могу создавать файлы с : в их именах. — erwaman 25 окт. 2017, в 20:38
  • Это неверно. См. Этот ответ для получения дополнительных символов, которые не допускаются Windows. — mbomb007, 01 ноя. 2017, 20:42
  • Windows также не допускает никаких символов управления (но Mac поддерживает, кроме NUL) — Томас Темпельманн, 29 ноя., 17:02
| показать 3 дополнительных комментария

Хорошо, поэтому посмотрите на Сравнение файловых систем, если вас интересуют только основные файловые системы проигрывателя:

  • Windows (FAT32, NTFS): любой Unicode, кроме NUL , , /, : , * , ", , > , | . Кроме того, без пробела в начале и в конце и без точки в конце.
  • Mac (HFS, HFS +): любой допустимый Unicode, кроме : или /
  • Linux (ext [ 2-4]): любой байт, кроме NUL или /

, поэтому любой байт кроме NUL , , /, : , * , ", , > , | и вы не можете есть файлы/папки с вызовом . или .. и без управляющих символов (конечно).


23

В ОС Windows создайте файл и присвойте ему недопустимый символ, например в имени файла. В результате вы получите всплывающее окно со всеми недопустимыми символами в имени файла.

Улучшите этот ответ
ответил 1 сентября ‘ 16, 13:59
добавить комментарий |

В ОС Windows создайте файл и присвойте ему недопустимый символ, например в имени файла. В результате вы получите всплывающее окно со всеми недопустимыми символами в имени файла.


5

Чтобы быть более точным о Mac OS X (сейчас называется MacOS) / в Finder интерпретируется как : в файловой системе Unix.

Это было сделано для обратной совместимости, когда Apple перешла с классической Mac OS.

Допустимо использовать / в имени файла в Finder, глядя на тот же файл в терминале, он будет отображаться с : .

И это работает и наоборот: вы не можете использовать / в имени файла с терминалом, но : в порядке и будет отображаться как / в Finder.

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

Улучшить этот ответ
отредактировал 03 февраля 2018 в 13:16
WebDevBooster
12.6k88 золотых знаков5555 серебряных знаков6666 бронзовых знаков
ответил 03 февраля 2018 в 12:46
добавить комментарий |

Чтобы быть более точным о Mac OS X (теперь называется MacOS), / в Finder интерпретируется в : в файловой системе Unix.

Это было сделано для обратной совместимости, когда Apple перешла с классической Mac OS.

Допустимо использовать / в имени файла в Finder, глядя на тот же файл в терминале, он будет отображаться с : .

И это работает и наоборот: вы не можете использовать / в имени файла с терминалом, но : в порядке и будет отображаться как / в Finder.

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


0

Для имен файлов с «английской локалью» это прекрасно работает. Я использую это для очистки имен загруженных файлов. Имя файла не предназначено для привязки к чему-либо на диске, оно используется при загрузке файла, поэтому проверки пути отсутствуют.

  $ file_name = preg_replace ('/ ([^  x20- ~] +) | ([\/:? " |] +)/g ',' _ ', $ client_specified_file_name);  

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

Улучшите этот ответ
ответил 24 окт., В 3:35
добавить комментарий |

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

  $ file_name = preg_replace ('/ ([^  x20- ~] +) | ([\/:? " |] +)/g ',' _ ', $ client_specified_file_name);  

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


-1

Вот код для очистки имени файла в python.

  import unicodedatadef clean_name (name, replace_space_with = None): "" "Удалите недопустимые символы имени файла из указанного имени: param name: имя файла: param replace_space_with: если нет, замените пробел этой строкой:  возврат: допустимое имя для Win/Mac/Linux "" "# ref: https://en.wikipedia.org/wiki/Filename # ref: https://stackoverflow.com/q  uestions/4814040/allowed-characters-in-filename # Без управляющих символов, no:/, ,?,%, *,:, |, ",  # удалить управляющие символы name = '' .join (ch for  ch в имени, если unicodedata.category (ch) [0]! = 'C') cleaned_name = re.sub (r '[/\?% *: | "]', '', name), если replace_space_with -  not None: return cleaned_name.replace ('', replace_space_with) return cleaned_name  

Улучшите этот ответ
ответил 8 июня ’18 в 15:20
  • 2
    Код не проверяет недопустимые (зарезервированные) имена , а также не проверяет недопустимый символ в replace_space_with. Длина имени файла выходит за рамки диапазона. Итак, : return: допустимое имя для Win/Mac/Linux неверно при любых обстоятельствах. — ack 25 сен 2018 в 8:09
добавить комментарий |

Вот код для очистки имени файла в python.

  import unicodedatadef clean_name (name, replace_space_with = None): "" "Удалить недопустимые символы имени файла из указанного имени: имя параметра: имя файла: параметр replace_space_with: если нет  никто не заменит пробел этой строкой: return: допустимое имя для Win/Mac/Linux "" "# ref: https://en.wikipedia.org/wiki/Filename # ref: https://stackoverflow.com/questions/ 4814040/allowed-characters-in-filename # Без управляющих символов, no:/, ,?,%, *,:, |, ",  # Удалить управляющие символы name = '' .join (ch for ch in  имя, если unicodedata.category (ch) [0]! = 'C') cleaned_name = re.sub (r '[/\?% *: | "]', '', name), если replace_space_with не равно None  : return cleaned_name.replace ('', replace_space_with) return cleaned_name  


Что правильно: «Имя файла», «Имя файла» или « FileName »?

Что правильно:« Filename »,« File Name »или« FileName »?


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

Однако ни при каких обстоятельствах не используйте заглавные буквы в середине слова. (Если вы не пишете имена переменных в коде.)


25

Имя файла , по моему опыту, является наиболее распространенным и, на мой взгляд, наиболее привлекательным. Имя файла также приемлемо, но я бы использовал его редко, возможно, в параллельной конструкции, такой как имя и размер файла . Я нахожу средние слова заглавными буквами отвлекающими и неприятными везде, кроме исходного кода программы, поэтому я бы никогда не подумал о FileName . Edit: если это причина, по которой вы спрашиваете, в исходном коде программы я бы все равно использовал Filename для класса или filename для переменной, а не FileName и fileName , соответственно.

В Британском национальном корпусе есть 240 ссылок для filename и 72 ссылки для имени файла . Невозможно выполнить поиск с учетом регистра, но несколько повторных загрузок случайной выборки конкретных записей не дали мне совпадений для FileName .

Улучшите этот ответ
отредактировано 22 нояб., В 8:23
ответил 22 ноября ’10 в 4:53
  • В примере параллельной конструкции, не правильнее ли вы сказать имя и размер файла ? — user4012, 22 ноя. ’13 в 17:35
  • 2
    @LucasTizma: Работают и аппозитивный, и притяжательный. — Джон Парди, 22 ноя., 13:32
  • Хм, я всегда использую file_name — Боно, 22 июля 2015, 18:47
  • @JonPurdy, спасибо за уточнение имени переменной — johnny 5 апр. 4 апр., 18:39
  • Это отлично работает, пока вам не понадобится также обратиться к другой атрибут файла , скажем «размер». Тогда вы делаете файл или размер файла ? Я лично предпочел бы, чтобы объект и атрибут были разделены, чтобы вы могли при необходимости расширить его: имя файла , размер файла , тип файла и т. д. — Джошуа Пинтер, 25 июня 2020 г., 17:04
добавить комментарий |

Filename , по моему опыту, самый распространенный и, на мой взгляд, самый красивый. Имя файла также приемлемо, но я бы использовал его редко, возможно, в параллельной конструкции, такой как имя и размер файла . Я нахожу средние слова заглавными буквами отвлекающими и неприятными везде, кроме исходного кода программы, поэтому я бы никогда не подумал о FileName . Edit: если это причина, по которой вы спрашиваете, в исходном коде программы я бы все равно использовал Filename для класса или filename для переменной, а не FileName и fileName , соответственно.

В Британском национальном корпусе есть 240 ссылок для filename и 72 ссылки для имени файла . Невозможно выполнить поиск с учетом регистра, но несколько повторных загрузок случайной выборки конкретных записей не дали мне совпадений для FileName .


8

В AHD есть запись для «filename», так что это по крайней мере, устоявшееся американское английское слово. Таким образом, это «правильно» для некоторых ситуаций..

Обновление: слово «путь» также включено в Словарь американского наследия: пятое издание . Поэтому со временем я буду менять свои программные переменные с SettingFilePathName на SettingFilePathname.

Улучшите этот ответ
отредактировано 02 апреля ’13 в 17:22
ответил 23 ноября ’10 в 17:21
добавить комментарий |

В AHD есть запись для «filename», так что это, по крайней мере, установленный Американское английское слово. Таким образом, это «правильно» для некоторых ситуаций.

Обновление: слово «путь» также включено в Словарь американского наследия: пятое издание . Поэтому со временем я заменю переменные моей программы с SettingFilePathName на SettingFilePathname.


3

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

Улучшите этот ответ
ответил 22 ноября ’10 в 17:58
добавить комментарий |

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


2

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

Улучшить этот ответ
ответил 22 ноября ’10 в 16:36
добавить комментарий |

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


1

Любые два слова (например, «имя файла»), используемые вместе в течение достаточно длительных периодов время в конечном итоге имеет одно значение на нашем коллективном языке. Когда это произойдет, вы можете комбинировать их, хотя это не рекомендуется для формального использования. Такие слова, как, например, «сам», старше, а распространенные примеры из компьютерной эпохи включают «имя пользователя», «электронная почта» и «рабочий стол». ‘.

Для формального использования рассмотрите возможность использования интервалов между словами или использования дефиса, где это необходимо.

Улучшите этот ответ
отредактировано 23 ноября 2010 г. в 14:49
ответил 23 ноября ’10 в 17:44
  • Мне почему-то не нравится «имя-файла» даже в формальном контексте. И «имя файла», и «имя файла» подходят. — Цуёси Ито, 23 ноября 2010, 14:47
  • Для пояснения: в некоторых словосочетаниях используются пробелы, в других — дефисы. Под «где уместно» я имел в виду, что вы должны использовать то, что сочтете подходящим. — Майкл Козакевич, 23 ноября 2010, 14:52
  • «Электронная почта» должно быть совершенно недопустимым написанием. «E» — это аббревиатура от электронного, поэтому следует писать по электронной почте. Если позволить дефису волшебным образом исчезнуть, он будет очень непоследовательным. Что же тогда происходит со словами вроде электронной экономики? Как насчет водородной бомбы, т-кости и рентгена? — Фредерик Краутвальд 23 ноя. ’14 в 23:25
добавить комментарий |

Любые два слова (например, «имя файла»), используемые вместе в течение достаточно длительного периода времени, в конечном итоге имеют одно значение в нашем коллективе язык. Когда это произойдет, вы можете комбинировать эти два слова, хотя это не рекомендуется для формального использования. Такие слова, как, например, «сам», старше, а распространенные примеры из компьютерной эпохи включают «имя пользователя», «электронная почта» и «рабочий стол». ‘.

Для формального использования рассмотрите возможность использования интервалов между словами или использования дефиса, где это необходимо.


0

В OED нет записи для «имя файла. «Однако, будучи техническим писателем с 25-летним стажем, я принял это написание, потому что программисты и инженеры предпочитают его. Тем не менее, мне это кажется странным.

Улучшите этот ответ
ответил 16 января ’14 в 20:47
  • 1
    Сегодня я посмотрел и обнаружил oxfordictionaries.com/definition/english/filename. — koppor 10 октября ’15 в 14:19
добавить комментарий |

В OED нет записи для «filename». Однако, будучи техническим писателем с 25-летним стажем, я принял это написание, потому что его предпочитают программисты и инженеры. Тем не менее, мне это кажется странным.

Оцените статью
logicle.ru
Добавить комментарий