Actuellement, j'utilise un nom YYMMDD-NAME+PAGE
pour la plupart de mes fichiers. NAME
a des espaces convertis en traits de soulignement.
J'aimerais utiliser le format de date YYYY-MM-DD
, 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ésumé:
\/:*?"<>|
/
Sur toutes les plateformes, il est préférable d'éviter les caractères non imprimables tels que les caractères de contrôle ASCII.
Windows
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 sont insensibles à 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. Toutefois, bien que l'invite de commandes Windows répertorie volontiers les deux fichiers à l'aide de dir
, vous ne pouvez pas accéder facilement à l'un d'eux ni en manipuler à l'aide de commandes telles que type
. Voir ci-dessous.
Linux, OS-X
Sous Linux et OS-X, seul le /
du jeu imprimable ASCII est interdit, je crois. Certains caractères (métacaractères Shell comme *?!
) poseront des problèmes de ligne de commande et nécessiteront que le nom du fichier soit correctement cité ou échappé.
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 - seules les valeurs nulles et /
sont interdites). Cela signifie que vous pouvez stocker les noms de fichiers au format UTF-8. Je pense que c'est 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’est pas si difficile à taper)
Sensibilité à la casse (in) sous Windows
C> dir /B
Ab
aB
аB
C> type Ab
b
b
C> type aB
b
b
C> type аB
unicode homograph
Notez que nous ne pouvons pas taper le contenu du second fichier, la commande Windows type
renvoie simplement le contenu de Ab à la place. Le troisième fichier serait également distinct de aB sous Linux.
(Windows 10 NTFS).
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 le octet nulposent problème sur au moins un système et doivent toujours être évités .[]()^ #%&!@:+={}'~
and [`]ont tous des significations spéciales dans de nombreux shells et sont gênants à contourner, et doivent donc être évités. Ils ont également tendance à avoir une apparence horrible dans les URL .Cela vous laisse essentiellement avec:
qui sont toujours sûrs et non gênants à utiliser (tant que vous démarrez le nom du fichier avec un caractère alphanumérique) :)
Vous pourriez:
#
(symbole d'espace libre pour le relecteur)Alt-1. Les majuscules peuvent remplacer les espaces: YYMMDD-HHMM-FileName.ext
ou YYMMDD-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).