Hoe verplaats ik bestanden en mappen naar de bovenliggende map in Linux?
Hoe verplaats je in Linux (Ubuntu) alle bestanden en mappen naar de bovenliggende map?
Hoe verplaats je in Linux (Ubuntu) alle bestanden en mappen naar de bovenliggende map?
Ik kwam hier omdat ik ook nieuw ben in dit onderwerp. Om een of andere reden werkte het bovenstaande niet voor mij. Wat ik deed om alle bestanden van een dir naar de bovenliggende dir te verplaatsen was:
cd to/the/dir
mv * ../
Typ dit in de commandoregel:
mv *.* ..
Dat verplaatst ALLE bestanden een niveau omhoog.
Het karakter *
is een wildcard. Dus *.deb
zal alle .deb bestanden verplaatsen, en Zeitgeist.*
zal Zeitgeist.avi en Zeitgeist.srt een map omhoog verplaatsen, omdat, natuurlijk, ..
de bovenliggende map aangeeft.
Om alles te verplaatsen, inclusief mappen, enz, gebruik je gewoon *
in plaats van *.*
Eenvoudiger kan het niet:
mv * ../
Om ook verborgen bestanden te verplaatsen:
mv /path/subfolder/{.,}* /path/
mv
is een commando om bestanden te verplaatsen, *
betekent alle bestanden en mappen en ../
is het pad naar de bovenliggende map.
In bash kunt u* shopt -s dotglob** gebruiken om alle bestanden te matchen en ze eenvoudig te verplaatsen door
shopt -s dotglob; mv * ..
Dit is niet de beste oplossing omdat de instelling permanent is voor de shell totdat u hem wijzigt door
shopt -u dotglob
maar ik denk dat het goed is om te weten.
Een methode die geen fouten veroorzaakt en elke keer werkt:
ls -1A . | while read -r file
do
mv "./${file}" ..
done
find . -maxdepth 2 -type f -exec mv {} .. \;
Ik gebruikte een variatie op het bovenstaande om alle bestanden van submappen naar de bovenliggende map te verplaatsen.
Ik had de gegevens per jaar in mappen gezet, maar door metadata te gebruiken kon ik ze allemaal in dezelfde map zetten, wat het beheer vergemakkelijkte.
bijv.
/data/2001/file_1
/data/2002/file_2
/data/2003/file_3
Het is niet nodig om de directories te veranderen. Voeg gewoon * toe aan het einde van het pad:
mv /my/folder/child/* /my/folder/
Bovenstaande verplaatst alleen niet verborgen bestanden. Om alleen verborgen bestanden te verplaatsen gebruikt u .*
mv /my/folder/child/.* /my/folder/
Bovenstaande twee kunnen gecombineerd worden in één commando:
mv /my/folder/child/{.,}* /my/folder/
Zie ook Hoe verplaats ik alle bestanden inclusief verborgen bestanden naar de bovenliggende map via .*
Ervan uitgaande dat al je verborgen bestanden beginnen met een punt gevolgd door een letter of een cijfer (wat zou moeten), zou je
mv * .[A-Za-z0-9]* ..
kunnen gebruiken. Het .[A-Za-z0-9]*
gedeelte is om ervoor te zorgen dat je niet probeert om .
of ..
mee te verplaatsen, wat zou mislukken.
Het is eenvoudig om in Linux alle bestanden en mappen naar de bovenliggende map te verplaatsen.
Ga naar die map en gebruik dit commando:
mv * /the full path
Bijvoorbeeld, als je bestanden en mappen als volgt zijn:
/home/abcuser/test/1.txt
2.txt
3.jpg
4.php
1folder
2folder
Ga naar die map via cd:
cd /home/abcuser/test
mv * /home/abcuser
Al uw bestanden en mappen worden verplaatst naar de map abcuser (bovenliggende map).
ga naar de subdirectory en voer het volgende commando uit om bestanden te kopiëren of te verplaatsen.
ex: a is de hoofddirectory en b is de subdirectory, we willen alle bestanden verplaatsen/kopiëren van b naar a (subdirectory naar de hoofddirectory).
cd b
cp * ..
mv * ..