2009-12-27 17:25:21 +0000 2009-12-27 17:25:21 +0000
84
84

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?

Risposte (12)

96
96
96
2013-01-26 20:20:56 +0000

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 * ../
72
72
72
2009-12-27 17:29:43 +0000
find . -maxdepth 1 -exec mv {} .. \;

questo sposterà anche i file nascosti.

Si otterrà il messaggio:

mv: cannot move `.' to `../.': Device or resource busy

quando cercherà di spostare . (directory corrente) ma questo non causerà alcun danno.

10
10
10
2009-12-27 17:27:56 +0000

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 *.*

6
6
6
2014-07-16 18:50:24 +0000

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.

2
2
2
2011-01-25 21:33:46 +0000

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.

1
1
1
2012-07-25 20:15:46 +0000

Un metodo che non causa errori e funziona sempre:

ls -1A . | while read -r file                                                    
do                                                                                  
    mv "./${file}" ..                                                            
done
1
1
1
2014-07-16 18:37:18 +0000
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
0
0
0
2016-04-11 04:38:26 +0000

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 *

0
0
0
2018-12-13 14:22:48 +0000
find -type f|while read line; do mv $line ${line##*/}; done
0
0
0
2009-12-27 17:48:32 +0000

Supponendo che tutti i tuoi file nascosti inizino con un punto seguito da una lettera o da un numero (che dovrebbero), potresti usare

mv * .[A-Za-z0-9]* ..

La parte .[A-Za-z0-9]* è per assicurarti di non provare a spostare . o .. lungo, che fallirebbe.

0
0
0
2011-11-03 11:39:25 +0000

È 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).

-1
-1
-1
2016-05-20 06:32:28 +0000

passare alla sotto-directory ed eseguire il seguente comando per copiare o spostare i file.

ex: a è la directory madre e b è la sotto directory, vogliamo spostare/copiare tutti i file da b ad a (sotto directory alla directory madre).

cd b
cp * ..
mv * ..