it-swarm.it

Sposta il contenuto della cartella di un livello superiore

Ho una directory che è spacchettata, ma è in una cartella. Come posso spostare i contenuti di un livello? Accedo a CentOS tramite SSH.

143
whatshakin

Con la cartella denominata "myfolder" e un livello superiore nella gerarchia dei file (il punto che si desidera inserire) il comando sarebbe:

mv myfolder/* .

Ad esempio, se i dati erano in /home/myuser/myfolder quindi da /home/myuser/ esegui il comando.

212
Rudu

Giusto per renderlo chiarissimo, tratto dalla risposta di Rudu sopra e dai commenti.

Se è necessario spostare tutti i contenuti, COMPRESI i file che iniziano con a. (come .htaccess, .git, ecc.), devi includere sia * che. * nel tuo comando. Così:

 mv subfolder/* subfolder/.* .

In questo modo il contenuto della sottocartella verrà spostato nella cartella corrente. Nota lo spazio prima dell'ultimo ".".

29
Richard

Questo è possibile con i seguenti metodi:

  • Utilizzando rsync:

    rsync -vua --delete-after foo/ .
    
  • Utilizzando cp e rmdir:

    cp -vaR foo/. . && rmdir foo/
    
  • Utilizzando mv (con l'opzione dotglob abilitata):

    shopt -s dotglob # Includes filenames beginning with a dot.
    mv -- foo/* .    # Where foo/ is the folder consisting the files.
    shopt -u dotglob # Disables previously enabled dotglob option.
    

    dove foo/ è la tua cartella il cui contenuto deve essere spostato di un livello superiore.

    Vedi: help shopt e man bash.

  • Utilizzando mv (come suggerito qui ):

    mv foo/* foo/.[^.]* . && rmdir foo/
    

    Nota: perderebbe un file chiamato foo/..bar...

    Nota: per le shell POSIX, è necessario [!.].

16
kenorb

basta emettere un comando mv

mv (directory)/* .

se si desidera eliminare la directory quindi aggiungere

rm -rf (directory)

Supponendo che ci si trovi in ​​una directory padre di (directory)

Se ti trovi all'interno della (directory), allora

mv * ../
7
Ranjith Siji

ho un comando breve

cp */* .

questo copierà tutto il contenuto delle sottocartelle al livello superiore, ovviamente puoi usare move

mv */* .

o assegnare una nuova distensione

cp */* /destination 
1
Mohammed Omer

per quelli di voi su un server condiviso dovreste usare qualcosa del genere

Per spostare i file

mv -v ~/public_html/public_html/* ~/public_html/

Per copiare i file

cp -a ~/public_html/public_html/* ~/public_html/

0
Ricardo Havoc