Sposta il contenuto della cartella nella cartella principale - Commandline Linux


18

Ho una cartella A che contiene la cartella B che contiene molti file. Vorrei liberarmi della cartella B, ma non del suo contenuto. Voglio che quei contenuti siano all'interno della cartella A. Come posso ottenere questo risultato dalla riga di comando?

Risposte:


28
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB

1
cartella mv B / *. ? qual è il punto?
NewLinuxUser,

8
Fai attenzione ai file dot (file il cui nome inizia con.) Poiché non includeranno quelli. Fallo anche mv folderB/.* .per spostarli. @NewLinuxUser, il punto nella tua domanda è un alias per la directory di lavoro (in questo caso, cartellaA).
Brian,

1
Questo non funziona se folderB/folderBesiste, quindi fai attenzione a usarlo negli script.
Filipos,

1
Ciò fallisce anche se folderBcontiene una quantità folle di file. Vedrai a bash: /bin/mv: Argument list too longcausa dell'uso di *. In tal caso, utilizzare mvin combinazione con findquanto dichiarato da @amphetamachine o con unfor loop
Javier de la Rosa

2

Risposta rapida:

cd /path/to/folderA
find folderB -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir folderB

Risposta resistente al codice:

cd /path/to/folderA
folderB_temp="$(mktemp -d -t folderB.XXXXXX)"
mv folderB "$folderB_temp"
find "$folderB_temp/folderB" -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir --parents --ignore-fail-on-non-empty "$folderB_temp/folderB"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.