Come faccio a spostare file e directory nella cartella madre in Linux?
In Linux (Ubuntu), come si fa a spostare tutti i file e le directory nella directory madre?
In Linux (Ubuntu), come si fa a spostare tutti i file e le directory nella directory madre?
Sono venuto qui perché anch'io sono nuovo in questo argomento. Per qualche ragione quanto sopra non ha funzionato per me. Quello che ho fatto per spostare tutti i file da una cartella alla sua cartella madre è stato:
cd to/the/dir
mv * ../
Digita questo nella shell:
mv *.* ..
Questo sposta TUTTI i file di un livello superiore.
Il carattere *
è un carattere jolly. Quindi *.deb
sposterà tutti i file .deb, e Zeitgeist.*
sposterà Zeitgeist.avi e Zeitgeist.srt una cartella più in alto, poiché, ovviamente, ..
indica la directory madre.
Per spostare tutto, comprese le cartelle, ecc, basta usare *
invece di *.*
Non può essere più semplice di:
mv * ../
Per spostare anche i file nascosti:
mv /path/subfolder/{.,}* /path/
mv
è un comando per spostare i file, *
significa tutti i file e le cartelle e ../
è il percorso della directory madre.
In bash potete usare* shopt -s dotglob**per fare in modo che * corrisponda a tutti i file e spostarli semplicemente da
shopt -s dotglob; mv * ..
Questa non è la soluzione migliore poiché l'impostazione è permanente per la shell finché non la cambiate da
shopt -u dotglob
ma penso sia buono da sapere.
Un metodo che non causa errori e funziona sempre:
ls -1A . | while read -r file
do
mv "./${file}" ..
done
find . -maxdepth 2 -type f -exec mv {} .. \;
Ho usato una variazione di cui sopra per spostare tutti i file dalle sottocartelle alla madre.
Avevo i dati in cartelle per anno, ma ho scoperto che usando i metadati potevo averli tutti nella stessa cartella, il che rendeva più facile la gestione.
es.
/data/2001/file_1
/data/2002/file_2
/data/2003/file_3
Non c'è bisogno di cambiare directory. Basta includere * alla fine del percorso:
mv /my/folder/child/* /my/folder/
Sopra si spostano solo i file non nascosti. Per spostare solo i file nascosti usa .*
mv /my/folder/child/.* /my/folder/
Sopra due possono essere combinati in un solo comando:
mv /my/folder/child/{.,}* /my/folder/
Vedi anche Come spostare tutti i file inclusi quelli nascosti nella directory principale tramite *
È semplice spostare tutti i file e le cartelle nella directory madre in Linux.
Vai in quella cartella e usa questo comando:
mv * /the full path
Per esempio, se i tuoi file e cartelle sono come segue:
/home/abcuser/test/1.txt
2.txt
3.jpg
4.php
1folder
2folder
Vai a quella cartella tramite cd:
cd /home/abcuser/test
mv * /home/abcuser
Tutti i tuoi file e cartelle si sposteranno nella cartella abcuser (directory madre).