Neuling hier... habe gerade versucht, einen Dateinamen, der 2 Punkte im Namen hatte, in einen einzelnen Punkt zu ändern, mit
rename 's/.././' filename
Die Datei ist verschwunden, aber ich glaube nicht, dass sie entfernt wurde, da noch genauso viel Speicherplatz im Speicher vorhanden ist. Wohin wurde diese Datei gesendet?
Antwort1
Die Datei heißt .lename
jetzt.
(Dies setzt voraus filename
, dass die Datei zuvor aufgerufen wurde. Ihre „echte“ Datei wird vermutlich einen anderen Namen haben. Aber wie auch immer die Datei aufgerufen wurde, die ersten beiden Zeichen wurden durch ein ersetzt .
.)
Dies liegt daran, dass ein Punkt in einem regulären Ausdruck einSonderzeichenBedeutungmit jedem Zeichen übereinstimmen. Also ..
sind zwei beliebige Zeichen. As rename
ersetzt nur die erste Übereinstimmung, es sei denn, Sie haben dasweltweitModifikator ( g
) wurden die ersten beiden Zeichen des von Ihnen angegebenen Dateinamens ersetzt.
Beachten Sie, dass der "Ersatz" ins/regex/replacement/modifiers
ist kein regulärer Ausdruck und daher funktioniert die .
rechte Seite Ihres Ausdrucks s/.././
wie erwartet.
Wo ist nun Ihre Datei:
Dateien, die mit einem beginnen, .
sind versteckt. Sie werden sie daher nicht sehen, wenn Sie ausführen ls
. Führen Sie aus, ls -a
um diese Dateien anzuzeigen.
Benennen Sie die Datei wieder um mitmv .lename filename
Escapen Sie beim nächsten Mal Zeichen, die für reguläre Ausdrücke speziell sind:
rename 's/\.\././' filename
Sie könnten auch rename -n ...
einen Probelauf durchführen und die Ergebnisse überprüfen, bevor Sie die eigentliche Umbenennung durchführen. Das Ergebnis wäre dann etwa wie folgt:
rename(filename, .lename)