In diesen Situationen besteht die Gefahr, dass Dateien mit demselben Namen überschrieben werden. Wie von @Arronical erwähnt, können Sie dies vermeiden, indem Sie das -b
Flag verwenden, durch mv
das alle gleichnamigen Dateien unterschieden werden, indem Sie sie ~
an ihre Namen anhängen . Wenn jedoch drei oder mehr Dateien mit demselben Namen vorhanden sind, werden nur die erste und die letzte Datei gespeichert. Überprüfen Sie daher den Inhalt, bevor Sie ihn verschieben, um Ihre Dateien zu schützen.
Der erste einfache Fall ist einfach; Wir können einen Shell Glob verwenden. Dadurch werden jedoch keine versteckten Dateien verschoben. Wenn Sie also Dateinamen haben, die mit .
beginnen, schalten Sie diese zunächst eindotglob
shopt -s dotglob
Dann können Sie ausführen:
mv -b /home/smit/test/* /home/smit
rmdir /home/smit/test
Deaktivieren Sie, dotglob
wenn Sie möchten (es wird ohnehin auf die Standardeinstellungen zurückgesetzt, wenn Sie eine neue Shell öffnen):
shopt -u dotglob
Für den zweiten (realen) Fall verwenden wir find
, der standardmäßig versteckte Dateien verschiebt:
Stellen Sie sicher, dass Sie sich zuerst am richtigen Ort befinden.
cd /usr/share/background/all
find -type f -exec echo mv -vb -- {} . \;
Wenn das gut aussieht, führen Sie es aus, ohne echo
Dateien tatsächlich zu verschieben
find -type f -exec mv -vb -- {} . \;
Dann finden Sie die Verzeichnisse
find -type d
Wenn Sie sehen, was Sie entfernen möchten:
find -type d -delete
Dies ist sicher, da es sich weigert, Verzeichnisse zu entfernen, die noch Inhalt enthalten.
-b
oder verwenden , um mit doppelten Dateinamen umzugehen und Backups der Originalversionen zu erstellen.--backup
mv
find: cannot delete ‘./linuxmint’: Directory not empty
Aber andere Dateien waren auch nicht leer. Ich habe keine Informationen in der Manpage gefunden. Es enthält Dateien,default_background.jpg
die ich nicht einmal über die GUI öffnen kann.find -type f -exec sudo mv -vb -- {} . \;
(damv
Aktionen Schreibvorgänge sind), aber wenn nicht, gab es Berechtigungsfehler? Möchten Sie einen Chatraum einrichten, um herauszufinden, was gerade passiert?find SOURCE -type f -exec mv -bt TARGET -- {} + && rm -rf SOURCE
.