Domanda Come trasferisco tutti i file da una cartella all'altra utilizzando la riga di comando?


Mi piacerebbe sapere come posso spostare tutti i file da una cartella in un'altra cartella con una riga di comando.

Diciamo che sono nella mia cartella Download e ci sono 100 file che vorrei spostare nella cartella Video, senza dover scrivere il nome di tutti i file.


167
2017-08-06 15:14


origine


Stai chiedendo di trasferirti files ma le persone ti mostrano come spostarti non solo files ma foldersanche. È ok? - Askar


risposte:


Apri un terminale ed esegui questo comando:

mv  -v ~/Downloads/* ~/Videos/

Sposterà tutti i file e le cartelle dalla cartella Download alla cartella Video.


Per spostare tutti i file, ma non le cartelle: 

Se sei interessato a spostare tutti i file (ma non le cartelle) dalla cartella Download alla cartella Video, usa questo comando

find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos

Per spostare solo i file dalle cartelle Download, ma non dalle sottocartelle:

Se si desidera spostare tutti i file dalla cartella Download, ma non tutti i file all'interno delle cartelle nella cartella Download, utilizzare questo comando:

find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos

Qui, -maxdepth opzione specifica in che modo la ricerca profonda dovrebbe provare, 1 significa, solo la directory specificata nel comando find. Puoi provare a usare 2, 3 anche per testare.

Vedi l'Ubuntu trova la manpage per una spiegazione dettagliata


234
2017-08-06 15:18



puoi usare solo mv per spostare un'intera directory in un'altra cartella: cartella mv ~ / Documenti - JohnMerlino
FYI Credo che il tuo primo comando ("mv -v ~ / Downloads / * ~ / Videos /") non sposterà i file di punti. - Mark Doliner
Sì, non sposta i file - Anwar
Nb. il tuo -print0 | xargs -0 mv -t ~/Videos può essere fatto in modo più efficiente -exec mv -t ~/Videos \{\} \+ :-) - artfulrobot
sì è vero. Ero novizio quando ho risposto alla domanda - Anwar


mv ~/Downloads/* ~/Videos

Sposterà tutti i file comprese le sottocartelle nella directory che si desidera mv. Se lo desidera cp (copia) o rm (rimuovi) avrai bisogno del -r (ricorsivo) per includere sottocartelle.


17
2017-12-08 03:24



Il mio comando mv non ha un'opzione -R (Ubuntu 14.04). - Mark Doliner
@ Mark Diner, sì, mv non ha bisogno dell'opzione ricorsiva per includere le sottocartelle. Si può usare anche per rinominare. - AliNâ
Non ho bisogno di *. La stessa cosa è accaduta senza usare la stella. - MycrofD
Il ~ / nel prefisso dei nomi delle cartelle non funziona sempre (non funziona su bash e git atleast) - Krish Munot
Questa soluzione darà un errore se la directory di origine è vuota. - Pierre Thibault


È possibile usando rsync, per esempio:

rsync -vau --remove-source-files src/ dst/

dove:

-v, --verbose: Aumenta la verbosità.

-a, --archive: Modalità di archiviazione; equivale -rlptgoD (no -H, -A, -X).

-u, --update: Salta i file più recenti sul ricevitore.

--remove-source-files        Ciò indica a rsync di rimuovere dal lato di invio i file (ovvero le non-directory) che fanno parte del trasferimento e sono stati duplicati con successo sul lato ricevente.

Se hai i privilegi di root, prefisso con sudo per ignorare potenziali problemi di autorizzazione.


5
2018-06-06 15:08



AVVERTIMENTO! l'opzione --delete-after, come indicato, non funziona come ci si potrebbe aspettare. Non elimina il fonte file dopo copia riuscita ... ELIMINA TUTTI I RIMANENTI / ALTRI FILE NELLA DESTINAZIONE. (come @kenorb ha notato ... ma non ho letto abbastanza attentamente! DOH) - Jay Marm


Uso

mv -v ~/rootfolder/branch/* ~/rootfolder

Spero che aiuti. Perché ho avuto lo stesso dolore e ho perso un sacco di tempo per correggere il mio errore.


2
2018-01-25 23:06





Per il caso semplice:

mv ~/Downloads/* ~/Videos

Se si desidera spostare anche i file di punti, quindi impostare il dotglob opzione di shell.

shopt -s dotglob
mv ~/Downloads/* ~/Videos

Questo lascia il set di opzioni della shell.

Per una volta usare dotglob, esegui i comandi in una subshell:

(shopt -s dotglob; mv ~/Downloads/* ~/Videos)

2
2018-01-22 10:16





  1. Vai alla riga di comando e entra nella directory con cui vuoi spostarlo cd folderNamehere
  2. genere pwd. Questo stamperà la directory che vuoi spostare anche tu.
  3. Quindi passare alla directory in cui sono presenti tutti i file cd folderNamehere
  4. Ora per spostare tutti i tipi di file mv *.* typeAnswerFromStep2here

Ciò sposterà tutti i file da quella directory all'altra.


1
2017-09-12 12:07



Questo non corrisponderà ai file senza alcuna estensione. per esempio se una cartella ha i file: foo.txt, bar. e bar entrambi bar. e bar non verrà spostato. utilizzando * invece di *.* si prende cura di questo. Ma in entrambi i casi, i file nascosti come: .foobar non verrà spostato. - Dan


Spostare una directory con o senza contenuto al suo nuovo nome proprio come usereste il mv comando per rinominare un file:

mv -T dir1 dir2

dove:

  • -T considera la destinazione come un file normale
  • dir1 è il nome originale della directory
  • dir2 è il nuovo nome della directory

NB: dir2 non deve esistere.

Spero che questo risparmi un sacco di tempo, come un noob, prima di questo, vorrei creare una directory con il nuovo nome e quindi spostare il contenuto della directory nella directory creata in precedenza.

Utilizzare per sottodirectory

Questo comando è utile quando molti file sono stati salvati in una sottocartella della directory di destinazione, ad es. Downloads/mp4. In questo esempio, in esecuzione mv -T Downloads/mp4 Videos risulterà in mp4 sottocartella rimosso e tutti i file contenuti all'interno vengono spostati nella cartella Video.


0
2017-12-09 07:33



+1 perché testato funziona in Xubuntu 14.04. Ho aggiunto un esempio in questa risposta per mostrare che questo comando causerà il dir1 essere rimosso. Oltre a questa precauzione, questa risposta ha notato qualcosa di buono per l'uso quotidiano. - clearkimura
"Per spostare una directory con o senza contenuto al suo nuovo nome" Come puoi spostare una directory ... in un nome? Non ha senso. "-T considera la destinazione come un normale file" Come può una destinazione essere un file? Intendi directory? - Monica Heddneck
È come rinominare un file con il suo nuovo nome come faresti con qualcosa di simile mv fileA fileB ma il -T flag in questo caso considera la destinazione / directory come un file e la rinomina. - Feyisayo Sonubi


Provalo

find ~/Desktop -type f -iname  "*.mp4" -exec mv {} ~/Videos \;

-genere con l'argomento -type puoi specificare type file.on questa istruzione che è il file medio.se usa -d che significa directory.

-nomino: il metodo più comune e ovvio per cercare un file sta usando il suo argomento -name. Se non sei sicuro della sua sensibilità alle maiuscole e minuscole puoi usare l'argomento -iname

mv {} e infine per specificare la directory di destinazione e quindi spostare i file lì usando l'argomento mv {}


0
2018-04-01 16:54