Antworten:
finden . -maxtiefe 1 -exec mv {} .. \;
Dadurch werden auch versteckte Dateien verschoben.
Sie erhalten die Nachricht:
mv: kann sich nicht bewegen zu `../. ': Gerät oder Ressource belegt
wenn es versucht, zu verschieben .
(aktuelles Verzeichnis), aber das wird keinen Schaden anrichten.
-maxdepth 1
, um sicher zu sein.
Ich bin hierher gekommen, weil ich auch neu in diesem Thema bin. Aus irgendeinem Grund hat das oben Genannte nicht den Trick für mich getan. Was ich getan habe, um alle Dateien von einem Verzeichnis in das übergeordnete Verzeichnis zu verschieben, war:
cd to/the/dir
mv * ../
(cd ${ANDROID_NDK_HOME}/android-ndk-r14b/ && mv * ../)
Geben Sie dies in die Shell ein:
mv *.* ..
Das verschiebt ALLE Dateien eine Ebene nach oben.
Der Charakter *
ist ein Platzhalter. So *.deb
werden alle .deb - Dateien bewegen, und Zeitgeist.*
wird Zeitgeist.avi und Zeitgeist.srt einen Ordner nach oben bewegen , da natürlich ..
das Verzeichnis Eltern angibt.
Um alles zu verschieben, einschließlich Ordner usw., verwenden Sie einfach *
anstelle von*.*
*
keine *.*
Verzeichnisse
Einfacher geht es nicht als:
mv * ../
So verschieben Sie auch versteckte Dateien:
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 bash können Sie shopt -s dotglob verwenden , um * alle Dateien abzugleichen und sie einfach zu verschieben
shopt -s dotglob; mv * ..
Dies ist nicht die beste Lösung, da die Einstellung für die Shell permanent ist, bis Sie sie durch ändern
shopt -u dotglob
aber ich finde es gut zu wissen.
(shopt -s dotglob && mv * ..)
. Auf diese Weise ist die Option nur lokal für diese Subshell.
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 Variante von oben verwendet, um alle Dateien aus Unterordnern in den übergeordneten Ordner zu verschieben.
Ich hatte bis zum Jahr Daten in Ordnern, aber mithilfe von Metadaten konnte ich feststellen, dass sich alle Daten in demselben Ordner befanden, was die Verwaltung vereinfachte.
z.B.
/data/2001/file_1
/data/2002/file_2
/data/2003/file_3
Angenommen, alle Ihre versteckten Dateien beginnen mit einem Punkt, gefolgt von einem Buchstaben oder einer Zahl (die sie sollten), können Sie verwenden
mv * .[A-Za-z0-9]* ..
Der .[A-Za-z0-9]*
Teil ist, um sicherzustellen, dass Sie nicht versuchen, sich zu bewegen .
oder ..
mitzumachen, was fehlschlagen würde.
Unter Linux ist es einfach, alle Dateien und Ordner in das übergeordnete Verzeichnis zu verschieben.
Gehen Sie in diesen Ordner und verwenden Sie diesen Befehl:
mv * /the full path
Beispiel: Ihre Dateien und Ordner lauten wie folgt:
/home/abcuser/test/1.txt
2.txt
3.jpg
4.php
1folder
2folder
Gehe zu diesem Ordner via CD:
cd /home/abcuser/test
mv * /home/abcuser
Alle Ihre Dateien und Ordner werden in den Ordner abcuser (übergeordnetes Verzeichnis) verschoben.
/the full path
funktioniert das unter Linux nicht, man muss Leerzeichen mit entkommen /the\ full\ path
.
Verzeichnisse müssen nicht geändert werden. Fügen Sie einfach * am Ende des Pfades ein:
mv /my/folder/child/* /my/folder/
Oben werden nur nicht versteckte Dateien verschoben. Um nur versteckte Dateien zu verschieben, verwenden Sie. *
mv /my/folder/child/.* /my/folder/
Über zwei können in einem Befehl kombiniert werden:
mv /my/folder/child/{.,}* /my/folder/
Siehe auch: So verschieben Sie alle Dateien einschließlich versteckter Dateien über * in das übergeordnete Verzeichnis
find -type f|while read line; do mv $line ${line##*/}; done
find
in while read
eine schlechte Methode find
, und es wurden bereits bessere Antworten veröffentlicht.
Wechseln Sie in das Unterverzeichnis und führen Sie den folgenden Befehl aus, um Dateien zu kopieren oder zu verschieben.
Beispiel: a ist das übergeordnete Verzeichnis und b ist das Unterverzeichnis. Wir möchten alle Dateien von b nach a (Unterverzeichnis in das übergeordnete Verzeichnis) verschieben / kopieren.
cd b
cp * ..
mv * ..