Actuellement, j'utilise un YYMMDD-NAME+PAGE
nom pour la plupart de mes fichiers. NAME
a des espaces convertis en traits de soulignement.
J'aimerais utiliser le YYYY-MM-DD
format de date, mais je ne sais pas comment le séparer du nom. Un -
semblerait étrange si le nom commençait par un nombre. Si j'utilise un _
, alors il est en conflit avec le trait de soulignement représentant un espace.
Quels caractères sont raisonnablement en sécurité dans les noms de fichiers qui fonctionneraient ici? Je suis sous Linux, mais je pourrais partager des fichiers avec d'autres personnes (Windows 7, Mac OS X).
Réponses:
Sommaire:
\/:*?"<>|
/
Sur toutes les plates-formes, il est préférable d'éviter les caractères non imprimables tels que les caractères de contrôle ASCII.
les fenêtres
Sous Windows, l'Explorateur Windows n'autorise pas les caractères de contrôle ou
\/:*?"<>|
vous pouvez utiliser des espaces. Si vous utilisez des espaces, vous devrez souvent citer le nom du fichier lorsqu'il est utilisé à partir de la ligne de commande (mais les applications de l'interface graphique ne sont pas affectées pour autant que je sache). Les systèmes de fichiers Windows tels que NTFS stockent apparemment le codage avec le nom de fichier, mais UTF-16 est standard.Certaines parties de Windows sont sensibles à la casse, d'autres ne respectent pas la casse. Il est facile de créer des noms de fichiers distincts tels que "Ab" et "ab" sur un système de fichiers Windows NTFS. Ces noms font référence à des fichiers distincts contenant un contenu distinct. Cependant, bien que l'invite de commande Windows répertorie volontiers les deux fichiers à l'aide
dir
, vous ne pouvez pas accéder facilement à l'un d'entre eux ni en manipuler à l'aide de commandes telles quetype
. Voir ci-dessous.Linux, OS-X
Sous Linux et OS-X, seul
/
le jeu ASCII imprimable est interdit, je crois. Certains caractères (métacaractères du shell, par exemple*?!
) poseront des problèmes de ligne de commande et obligeront le nom de fichier à être cité ou échappé de manière appropriée.Les systèmes de fichiers Linux tels que ext2, ext3 sont agnostiques en ce qui concerne les jeux de caractères (je pense qu'ils le traitent plus ou moins comme un flux d'octets - uniquement les valeurs NULL et
/
sont interdites). Cela signifie que vous pouvez stocker les noms de fichiers au format UTF-8. Je pense qu'il appartient au shell ou à une autre application de savoir quel codage utiliser pour convertir correctement le nom de fichier en affichage ou en traitement.Conclusion
Donc, vous pouvez probablement utiliser en toute sécurité quelque chose comme
✣
(si ce n’était pas si difficile à taper)Sensibilité à la casse (in) sous Windows
Notez que nous ne pouvons pas taper le contenu du deuxième fichier, la
type
commande Windows renvoie simplement le contenu de Ab à la place. Le troisième fichier serait également distinct de aB sous Linux.(Windows 10 NTFS).
la source
Bien que la réponse de RedGrittyBrick soit techniquement correcte, la sécurité n'est pas le seul problème: la convivialité est également importante. Je pense qu'une meilleure question est "quels caractères sont bons à utiliser dans un nom de fichier".
Quelques lignes directrices potentielles:
\/:*?"<>|
et l' octet nul pose problème sur au moins un système et doit toujours être évité.[]()^ #%&!@:+={}'~
et [`] ont tous une signification particulière dans de nombreux coquillages et sont agaçants à travailler, il faut donc les éviter. Ils ont également tendance à avoir une apparence horrible dans les URL .Cela vous laisse essentiellement avec:
[0-9a-zA-Z -._]
qui sont toujours sûrs et non gênants à utiliser (tant que vous démarrez le nom de fichier avec un caractère alphanumérique) :)
la source
[]
) font partie des expressions régulières et ont également une signification spéciale dans le shell. Mais ils ne sont pas si mauvais que de travailler avec, sauf quelques cas de mauvais coin.()
.[]()^;
, donc je pense que la bonne réponse pourrait en fait être une[0-9a-zA-Z.,_-]
virgule pourrait également être exclue simplement parce que c'est bizarre de voir un nom de fichier, bien que je ne puisse pas penser à un cas réel où cela causerait problèmes.echo whereami > a,b,c
dans la fenêtre d'invite de commande de Win10.Vous pourriez:
#
(symbole du correcteur d'épreuves pour l'espace)Alt-1. les majuscules peuvent remplacer les espaces:
YYMMDD-HHMM-FileName.ext
ouYYMMDD-HHMM_FileName.ext
Caractères minimaux pour un affichage clair, qui trie automatiquement avec des zéros remplis pour les mois de janvier à septembre (et du 1er au 9 de chaque mois).
la source