Derzeit benutze ich YYMMDD-NAME+PAGE
für die meisten meiner Dateien einen Namen. NAME
Leerzeichen werden in Unterstriche umgewandelt.
Ich möchte das YYYY-MM-DD
Datumsformat verwenden, bin mir aber nicht sicher, wie ich es vom Namen trennen soll. A -
würde seltsam aussehen, wenn der Name mit einer Zahl beginnen würde. Wenn ich a benutze _
, widerspricht es dem Unterstrich, der ein Leerzeichen darstellt.
Welche Zeichen sind in Dateinamen relativ sicher, die hier funktionieren würden? Ich bin unter Linux, teile aber möglicherweise Dateien mit anderen (Windows 7, Mac OS X).
Antworten:
Zusammenfassung:
\/:*?"<>|
/
Auf allen Plattformen ist es am besten, nicht druckbare Zeichen wie die ASCII-Steuerzeichen zu vermeiden.
Windows
In Windows erlaubt der Windows Explorer keine Steuerzeichen oder
\/:*?"<>|
Sie können Leerzeichen verwenden. Wenn Sie Leerzeichen verwenden, müssen Sie den Dateinamen häufig in Anführungszeichen setzen, wenn Sie ihn über die Befehlszeile eingeben (GUI-Apps sind meines Wissens jedoch nicht betroffen). Windows-Dateisysteme wie NTFS speichern anscheinend die Kodierung mit dem Dateinamen, aber UTF-16 ist Standard.Bei einigen Teilen von Windows wird zwischen Groß- und Kleinschreibung unterschieden, bei anderen Teilen wird zwischen Groß- und Kleinschreibung nicht unterschieden. Es ist einfach, unterschiedliche Dateinamen wie "Ab" und "ab" in einem Windows NTFS-Dateisystem zu erstellen. Diese Namen beziehen sich auf separate Dateien, die unterschiedliche Inhalte enthalten. Obwohl die Windows-Eingabeaufforderung beide Dateien mit glücklich auflistet
dir
, können Sie mit Befehlen wie nicht einfach auf eine von ihnen zugreifen oder sie bearbeitentype
. Siehe unten.Linux, OS-X
Unter Linux und OS-X
/
ist meines Erachtens nur der druckbare ASCII-Satz verboten. Einige Zeichen (z. B. Shell-Metazeichen*?!
) verursachen Probleme in der Befehlszeile und erfordern, dass der Dateiname in Anführungszeichen gesetzt oder mit Escapezeichen versehen wird.Linux-Dateisysteme wie ext2, ext3 sind zeichenunabhängig (ich denke, sie behandeln es nur mehr oder weniger als Byte-Stream - nur Nullen und
/
sind verboten). Dies bedeutet, dass Sie Dateinamen in UTF-8-Codierung speichern können. Ich glaube, es liegt an der Shell oder einer anderen Anwendung, zu wissen, welche Codierung verwendet werden muss, um den Dateinamen ordnungsgemäß für die Anzeige oder Verarbeitung zu konvertieren.Fazit
Sie könnten also sicher so etwas verwenden
✣
(wenn es nicht so schwer zu tippen wäre)Groß- / Kleinschreibung in Windows
Beachten Sie, dass wir den Inhalt der zweiten Datei nicht eingeben können. Der Windows-
type
Befehl gibt stattdessen nur den Inhalt von Ab zurück. Die dritte Datei würde sich auch unter Linux von aB unterscheiden.(Windows 10 NTFS).
quelle
Während die Antwort von RedGrittyBrick technisch korrekt ist, ist Sicherheit nicht das einzige Problem: Benutzerfreundlichkeit ist auch wichtig. Ich denke, eine bessere Frage ist, "welche Zeichen in einem Dateinamen gut zu verwenden sind".
Einige mögliche Richtlinien:
\/:*?"<>|
und das Null-Byte sind auf mindestens einem System problematisch und sollten immer vermieden werden.[]()^ #%&!@:+={}'~
und [`] alle haben in vielen Schalen eine besondere Bedeutung und sind ärgerlich, wenn man sie umgeht, und sollten daher vermieden werden. Sie sehen auch in URLs schrecklich aus .Das lässt Sie im Grunde mit:
[0-9a-zA-Z -._]
das ist immer sicher und nicht ärgerlich zu benutzen (solange du den Dateinamen mit einer alphanumerischen Zahl beginnst) :)
quelle
[]
) sind Teil regulärer Ausdrücke und haben auch in der Shell eine besondere Bedeutung. Aber es ist nicht so schlimm, mit ihnen zu arbeiten, außer mit einigen bösen Eckfällen.()
eigentlich sagen .[]()^;
, daher denke ich, dass die richtige Antwort tatsächlich[0-9a-zA-Z.,_-]
Komma sein könnte, und möglicherweise auch ausgeschlossen werden kann, nur weil es seltsam ist, in einem Dateinamen zu sehen, obwohl ich mir keinen konkreten Fall vorstellen kann, in dem dies dazu führen würde Probleme.echo whereami > a,b,c
in Win10 Eingabeaufforderungsfenster.Du könntest:
#
(Korrekturlesersymbol für Leerzeichen).Alt-1. Initialen können Leerzeichen ersetzen:
YYMMDD-HHMM-FileName.ext
oderYYMMDD-HHMM_FileName.ext
Minimale Zeichen für eine übersichtliche Anzeige, die automatisch mit gepolsterten Nullen für Jan-Sep (& 1st-9th ea mo) sortiert.
quelle