Linux mv Befehl Daten an einen unbekannten Ort verschoben?

11

Ich habe diesen Befehl versehentlich in SSH ausgeführt:

mv /var/www/vhosts/website/httpdocs/magento/*

Jetzt sind alle Daten im Magento-Verzeichnis verschwunden. Weiß jemand, wohin es gezogen ist?

Vielen Dank!

rdrb-3
quelle
Gehen Sie folgendermaßen vor, um automatisch zu bestimmen, in welches Verzeichnis Ihre Daten verschoben wurden und ob Sie Bash verwenden : a=( /var/www/vhosts/website/httpdocs/magento/* ); echo "${a[${#a[@]}-1]}". Wenn nicht in Bash, sollte dies funktionieren : printf '%s\n' /var/www/vhosts/website/httpdocs/magento/* | tail -1. Andernfalls befindet es sich sehr wahrscheinlich alphanumerisch im letzten Verzeichnis. Erledigt.
gniourf_gniourf

Antworten:

20

Wenn der alphabetisch letzte Eintrag in diesem Verzeichnis ein Verzeichnis selbst ist, sind sie dort.

Angenommen , Sie die Dateien haben a, bund cund das Verzeichnis d. In diesem Fall,

mv /var/www/vhosts/website/httpdocs/magento/*

erweitert sich zu

mv /var/www/vhosts/website/httpdocs/magento/a /var/www/vhosts/website/httpdocs/magento/b /var/www/vhosts/website/httpdocs/magento/c /var/www/vhosts/website/httpdocs/magento/d

Das ist ein Befehl, um alles zu verschieben d. Schau dort, wenn es etwas gibt.

Wenn des kein Verzeichnis wäre, mvhätte ich mich darüber beschweren sollen.

glglgl
quelle
1
+1: Schauen Sie unter den Unterverzeichnissen im Verzeichnis / var / www / vhosts / website / httpdocs / magento / * nach. Hinweis: Das Unterverzeichnis befindet sich noch im Magento-Verzeichnis, daher sollte es einfach sein, da sich jetzt fast alles andere darunter befinden sollte. Daher sollte nur noch ein Verzeichnis übrig sein (ohne diejenigen, die mit einem '.' Beginnen). Geben Sie dieses Unterverzeichnis und "mv * .." ein. Dies könnte jedoch Dinge verschieben, die sich zuvor zu Recht unter diesem Verzeichnis befanden, sodass Sie sie zurücklegen müssen. + Jede Datei, die den gleichen Namen wie eine Datei von Magento / * hatte, wurde überschrieben (wenn Ihr "mv" nicht auf "mv -i" ausgerichtet ist)
Olivier Dulac
2
ordentlicher Trick mit mv *: mkdir zzz; mv *der den gesamten Inhalt des aktuellen Verzeichnisses in das Verzeichnis zzz verschiebt. Stellen Sie nur sicher, dass Sie keine Dateien haben, die lexagraphisch nach zzz sortieren.
2

So erweitern Sie die Antwort von glglgl:

Die Befehlszeilen-Platzhaltererweiterung in Unix-ähnlichen Betriebssystemen wird von der Shell ausgeführt. In den meisten Fällen wäre dies unter Linux der Fall bash. In der Manpage wird ausdrücklich angegeben, dass die Platzhaltererweiterung alphabetisch sortiert wird. Gleiches sollte für die meisten Bourne-kompatiblen Shells gelten.

Pabouk
quelle
Wahrscheinlich nicht nur die meisten, sondern alle. Ansonsten mangelt es an Kompatibilität.
glglgl