"Mv file" und jetzt fehlt es

32

In einem Terminalfenster habe ich Folgendes eingegeben:

mv filename ..\..      [Note the wrong slash.]

Jetzt kann ich es nicht finden. Weg. Ich habe einige Suchanfragen durchgeführt und wiederherstellbare gelöschte Dateien durchsucht. Nichts. Poof. Ist mir recht, dass ich einen Windows-Computer direkt zuvor verwendet habe.

Weiß jemand, wohin es gegangen sein könnte?

John
quelle
find / -iname thefilename -print vielleicht ?
Sergiy Kolodyazhnyy
@Serg Mit thefilenameals ursprünglichem Dateinamen findet dieser findBefehl ihn nicht unter dem neuen Namen.
Eliah Kagan
Das habe ich gleich nach dem Schreiben des Kommentars festgestellt. Meine erste Antwort, wenn eine Datei fehlt, ist find zu verwenden, aber was ich nicht
bemerkt

Antworten:

70

Es ist nirgendwo hingegangen, es befindet sich im aktuellen Verzeichnis. Es wurde in ....(vier Punkte) umbenannt.

Wie jeder Dateiname mit einem .vorangestellten wird eine versteckte Datei behandelt, so wurde sie versteckt. Wenn Sie das tun ls, werden Sie es nicht finden. Wie immer benötigen Sie die Option -a(oder -A) ls, um die versteckten Dateien anzuzeigen, dh ls -a(oder ls -A), um sie anzuzeigen .

Lassen Sie es mich zusammenfassen, Sie haben ausgeführt mv filename ..\.., die ersten beiden Punkte würden das übergeordnete Verzeichnis bedeuten, wenn es so wäre ../, aber Sie haben einen umgekehrten Schrägstrich verwendet, ..\der angibt, dass die Shell das nächste Zeichen umgeht, aber ein Punkt .hat keine besondere Bedeutung für die Shell. Es wird also als Literal behandelt .und das letzte wird .ebenfalls hinzugefügt, sodass Sie vier Punkte ....als Dateinamen erhalten.

Um wieder zum vorherigen (original) Name, Lauf zurück mv .... filename.

heemayl
quelle
2
Hahaha ... ist mir noch nie in den Sinn gekommen. Da ist es: "....". Vielen Dank! Ich vermute, es interpretierte den ersten Punkt als den .hideme-Punkt.
John
2
Darf ich vorschlagen la -A(mit einem Großbuchstaben A). Es tut das Gleiche ls -a, schließt aber .und aus ...
Paddy Landau
13

Führen mv .... filenameSie aus, um es wieder umzubenennen. ( mv ..\.. filenameWürde auch funktionieren, aber das \ist überflüssig - so wie es in deinem ursprünglichen Befehl war.)

  • Die Datei wurde nicht gelöscht. Daher wurde sie bei der Suche nach wiederherstellbaren gelöschten Dateien nicht gefunden.
  • Wie bei anderen Windows, .und ..Einträge sind in jedem Verzeichnis und beziehen sich auf die „aktuellen“ und „Eltern“ Verzeichnisse sind. Im Gegensatz zu Windows haben Sequenzen mit mehr als zwei Punkten keine besondere Bedeutung. Es ist zwar ungewöhnlich, aber es steht Ihnen völlig frei, eine gewöhnliche Datei mit einem Namen zu benennen, der nur aus Punkten besteht, solange er mindestens drei Punkte lang ist.
  • Anders als in Windows wird in Ubuntu die Shell \als Escape-Zeichen verwendet, um sicherzustellen, dass die Shell das folgende Zeichen buchstäblich behandelt, anstatt ihm eine besondere Bedeutung zu geben. Das .Zeichen hat in der Shell keine besondere Bedeutung (insbesondere ist die Shell nicht dafür verantwortlich, dass die Einträge .und ..funktionieren). Daher war in Ihrem Befehl \.gleichbedeutend mit ..
  • Wie Heemayl sagt , zeigen die meisten Dienstprogramme standardmäßig keine Dateien und Verzeichnisse an, deren Namen mit a beginnen .. Seit dem ....Start mit ., lsohne die -Aoder -aFlagge laufen, hat es nicht offenbart.
Eliah Kagan
quelle
1
Genau so habe ich es gefunden. Ich habe mich gefragt, warum mein "\" nicht als Flucht diente, aber Sie, nichts, was Sie so normal behandeln könnten. Macht Sinn.
John
5

es befindet sich immer noch im selben Verzeichnis, nur noch eine 'versteckte' Datei. Sie können es mit "mv .... filename" wiederherstellen.

Bruce
quelle