Speicherort der Dateien nach einem fehlerhaften Umbenennungsbefehl

Speicherort der Dateien nach einem fehlerhaften Umbenennungsbefehl

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 .lenamejetzt.

(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 renameersetzt 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/modifiersist 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 -aum 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)

verwandte Informationen