Come spostare più file contemporaneamente in una directory di destinazione specifica?

117

Ho un sacco di file in qualche directory (insieme a molti altri file) che voglio spostare.

Fortunatamente, tutti i file che voglio spostare contengono un certo identificatore nel loro nome, quindi posso ls | grep IDENTIFIER per ottenere l'elenco esatto dei file da spostare.

Ma come posso eseguire mv file /path/to/dest/folder/ in una volta e non uno alla volta (ci sono molti file da spostare)?

    
posta gilad hoch 08.11.2012 - 14:13
fonte

11 risposte

84

Se vuoi spostare ABC-IDENTIFIER-XYZ.ext o IDENTIFIER-XYZ.xml , puoi usare:

mv *IDENTIFIER* ~/YourPath/

* è un carattere jolly per zero o più caratteri , questo significa zero o più caratteri , seguito da IDENTIFIER , seguito da zero o più caratteri .

Questo sposta tutti i file che contengono il IDENTIFIER che hai specificato.

    
risposta data Evandro Silva 08.11.2012 - 14:33
fonte
166

Potresti usare

mv -t DESTINATION file1 file2 file3

e

mv -t DESTINATION 'ls|grep IDENTIFIER'

funziona, ma non sono sicuro che mv venga richiamato più volte o meno dato che grep emetterà una nuova riga per ogni corrispondenza.

    
risposta data tuomaz 14.11.2012 - 12:07
fonte
20

Puoi utilizzare caratteri jolly .

Esempio: per spostare tutti i file con estensione .doc

mv *.doc /path/to/dest/folder/

Questo sposta tutti i file doc nella directory corrente nella destinazione specifica.

Modifica

Per rispondere al commento.

mv *.ext *.xml *.txt /path/to/dest/folder/

    
risposta data Achu 08.11.2012 - 14:21
fonte
15

Se vuoi spostare una serie di file irrilevanti (nessun modello comune nei nomi e nei tipi) puoi fare come ha detto Mr. Rajanand: prima vai alla directory che contiene i file che vuoi spostare

mv file1.ext1 file2.ext2 file3.ext3.. /destination/

Nel caso in cui i file siano sparsi in diverse directory, è sufficiente specificare il percorso per ogni file nel comando di spostamento

    
risposta data Ismail AL-taharwa 26.03.2014 - 05:03
fonte
10

Uso la tecnica di tuomaz, ma leggermente modificata:

mv file1 file2 file3 -t DESTINATION

Trovo che sia più facile da ricordare e più difficile da rovinare visto che usa lo stesso ordine dell'operazione di vaniglia mv:

mv file1 DESTINATION
    
risposta data Blake Frederick 20.01.2015 - 17:11
fonte
7

Usa questo comando:

mv 'ls|grep IDENTIFIER' /path/to/dest/folder  

Tuttavia, ls non è raccomandato per questo tipo di utilizzo. Al posto del comando trova .

    
risposta data ignite 08.11.2012 - 14:44
fonte
5

Se hai così tanti file da spostare puoi effettivamente averne troppi per il comando mv (o altri comandi come rm ). Suggerisco di usare xargs per spostare ciascun file singolarmente in modo simile al ciclo. Un modo per aggirare ciò che deve fare:

ls -1 | grep IDENTIFIER | xargs -i mv {} /path/to/dest/folder/

Il ls -1 (meno uno) garantisce che vi sia un solo nome file su ogni riga. Se hai alias nascosti per il comando ls puoi avere più nomi di file su una singola riga e spostare inavvertitamente un file che non intendevi spostare.

    
risposta data AggieBill 14.11.2012 - 11:05
fonte
2

Puoi usare l'output di ls per l'input in mv commnad

mv $(ls | grep IDENTIFIER) /path/to/dest/dir

Il comando tra $() restituisce un elenco di nomi di file che corrispondono alla tua ricerca e che può essere fornito come parametro per il comando mv.

    
risposta data Fuad Saud 13.11.2012 - 20:38
fonte
2
find -type f -name "[range]" -exec mv {} target-directory ';'

questo comando sposta i nomi dei file con qualsiasi modello / intervallo nella directory di destinazione.

ad es.

find -type f -name "file[1-50000]" -exec mv {} target-directory ';'

Sposta i file con nomi come file1 , file2 ... file50000 a target-directory .

    
risposta data user734124 07.09.2017 - 16:51
fonte
1

Utilizzando questo comando puoi spostare più file.

mv SourceFilenames ~DestinationPath

    
risposta data Rajanand 14.11.2012 - 11:13
fonte
0

Se i file si trovano nella stessa dir puoi usare

mv /path/to/source/dir/{file1,file2,*.ext1,*.ext2} /path/to/destination/

(testato in Ubuntu 16.04)

    
risposta data Sruli 01.12.2017 - 10:19
fonte

Leggi altre domande sui tag