Wie verschiebe ich unter Linux Dateien und Verzeichnisse in den übergeordneten Ordner?
Wie verschieben Sie unter Linux (Ubuntu) alle Dateien und Verzeichnisse in das übergeordnete Verzeichnis?
Wie verschieben Sie unter Linux (Ubuntu) alle Dateien und Verzeichnisse in das übergeordnete Verzeichnis?
Ich bin hierher gekommen, weil ich auch neu in diesem Thema bin. Aus irgendeinem Grund hat das obige bei mir nicht geklappt. Was ich getan habe, um alle Dateien aus einem Verzeichnis in das übergeordnete Verzeichnis zu verschieben, war:
cd to/the/dir
mv * ../
find . -maxdepth 1 -exec mv {} .. \;
damit werden auch versteckte Dateien verschoben.
Sie werden die Meldung erhalten:
mv: cannot move `.' to `../.': Device or resource busy
, wenn es versucht, .
(aktuelles Verzeichnis) zu verschieben, aber das wird keinen Schaden anrichten.
Geben Sie in der Shell Folgendes ein:
mv *.* ..
Das verschiebt ALLE Dateien eine Ebene nach oben.
Das Zeichen *
ist ein Platzhalter. *.deb
verschiebt also alle .deb-Dateien, und Zeitgeist.*
verschiebt Zeitgeist.avi und Zeitgeist.srt einen Ordner nach oben, da ..
natürlich das übergeordnete Verzeichnis angibt.
Um alles einschließlich der Ordner usw. zu verschieben, verwenden Sie einfach *
anstelle von *.*
Es kann nicht einfacher sein als:
mv * ../
Um auch versteckte Dateien zu verschieben:
mv /path/subfolder/{.,}* /path/
mv
ist ein Befehl zum Verschieben von Dateien, *
bedeutet alle Dateien und Ordner und ../
ist der Pfad zum übergeordneten Verzeichnis.
In der Bash können Sie* shopt -s dotglob** verwenden, um * alle Dateien abzugleichen und sie einfach durch
shopt -s dotglob; mv * ..
zu verschieben. Dies ist nicht die beste Lösung, da die Einstellung für die Shell permanent ist, bis Sie sie durch
shopt -u dotglob
ändern, aber ich denke, es ist gut zu wissen.
Eine Methode, die keine Fehler verursacht und jedes Mal funktioniert:
ls -1A . | while read -r file
do
mv "./${file}" ..
done
find . -maxdepth 2 -type f -exec mv {} .. \;
Ich habe eine Variation von oben verwendet, um alle Dateien aus Unterordnern in den übergeordneten Ordner zu verschieben.
Ich hatte die Daten in Ordnern nach Jahren geordnet, fand aber durch die Verwendung von Metadaten heraus, dass ich sie alle im selben Ordner haben konnte, was die Verwaltung vereinfachte.
z. B.
/data/2001/file_1
/data/2002/file_2
/data/2003/file_3
Es ist nicht notwendig, Verzeichnisse zu ändern. Fügen Sie einfach * am Ende des Pfades ein:
mv /my/folder/child/* /my/folder/
Obiges verschiebt nur nicht versteckte Dateien. Um nur versteckte Dateien zu verschieben, verwenden Sie .*
mv /my/folder/child/.* /my/folder/
Die beiden obigen Befehle können zu einem einzigen kombiniert werden:
mv /my/folder/child/{.,}* /my/folder/
Angenommen, alle Ihre versteckten Dateien beginnen mit einem Punkt, gefolgt von einem Buchstaben oder einer Zahl (was sie sollten), könnten Sie
mv * .[A-Za-z0-9]* ..
verwenden. Der Teil .[A-Za-z0-9]*
soll sicherstellen, dass Sie nicht versuchen, .
oder ..
zu verschieben, was fehlschlagen würde.
Es ist einfach, unter Linux alle Dateien und Ordner in das übergeordnete Verzeichnis zu verschieben.
Gehen Sie zu diesem Ordner und verwenden Sie diesen Befehl:
mv * /the full path
Wenn Ihre Dateien und Ordner z. B. wie folgt sind:
/home/abcuser/test/1.txt
2.txt
3.jpg
4.php
1folder
2folder
Gehen Sie mit cd in diesen Ordner:
cd /home/abcuser/test
mv * /home/abcuser
Alle Ihre Dateien und Ordner werden in den Ordner abcuser (übergeordnetes Verzeichnis) verschoben.
Wechseln Sie in das Unterverzeichnis und führen Sie den folgenden Befehl zum Kopieren oder Verschieben von Dateien aus.
z. B.: a ist das übergeordnete Verzeichnis und b ist das Unterverzeichnis, wir wollen alle Dateien von b nach a (Unterverzeichnis nach übergeordnetem Verzeichnis) verschieben/kopieren.
cd b
cp * ..
mv * ..