web-dev-qa-db-fra.com

Comment déplacer plusieurs fichiers à la fois vers un répertoire de destination spécifique?

J'ai un tas de fichiers dans un répertoire (avec beaucoup d'autres fichiers) que je veux déplacer.

Heureusement, tous les fichiers que je veux déplacer contiennent un certain identifiant dans leurs noms. Je peux donc ls | grep IDENTIFIER obtenir la liste exacte des fichiers à déplacer.

Mais comment puis-je exécuter mv file /path/to/dest/folder/ à la fois, et pas un par un (il y a beaucoup de fichiers à déplacer)?

137
gilad hoch

Si vous souhaitez déplacer ABC-IDENTIFIER-XYZ.ext ou IDENTIFIER-XYZ.xml, vous pouvez utiliser:

mv *IDENTIFIER* ~/YourPath/

* est un caractère générique pour zéro ou plus de caractères, cela signifie plus ou moins de caractères, suivi de IDENTIFIER, suivi de plus ou moins de caractères.

Cela déplacera tous les fichiers que contient le IDENTIFIER que vous avez spécifié.

95
Evandro Silva

Vous pourriez utiliser

mv -t DESTINATION file1 file2 file3

et

mv -t DESTINATION `ls|grep IDENTIFIER`

fonctionne, mais je ne suis pas sûr que mv soit invoqué plusieurs fois ou non, car grep générera une nouvelle ligne pour chaque correspondance.

187
tuomaz

Vous pouvez utiliser caractères génériques .

Exemple: pour déplacer tous les fichiers ayant l'extension .doc

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

Cela déplacera tous les fichiers doc du répertoire actuel vers la destination spécifique.

Modifier

Pour répondre au commentaire.

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

23
Achu

Si vous souhaitez déplacer un ensemble de fichiers non pertinents (pas de motif commun dans les noms et les types), vous pouvez procéder comme M. Rajanand l’a dit: commencez par aller dans le répertoire qui contient les fichiers que vous souhaitez déplacer.

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

Si les fichiers sont dispersés dans des répertoires différents, il vous suffit de spécifier le chemin de chaque fichier dans la commande de déplacement.

20
Ismail AL-taharwa

J'utilise la technique de tuomaz, mais légèrement modifiée:

mv file1 file2 file3 -t DESTINATION

Je trouve cela plus facile à retenir et plus difficile à bousiller car il utilise le même ordre que l'opération Vanilla mv:

mv file1 DESTINATION
10
Blake Frederick

Utilisez cette commande:

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

Cependant, ls n’est pas recommandé pour ce type d’utilisation. Utilisez la commande find à la place.

7
ignite

Si les fichiers sont dans le même répertoire, vous pouvez utiliser

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

(testé dans Ubuntu 16.04)

5
Sruli

Si vous avez autant de fichiers à déplacer, vous pouvez en avoir trop pour la commande mv (ou d’autres commandes telles que rm). Je suggère d'utiliser xargs pour déplacer chaque fichier individuellement dans une boucle, comme à la mode. Une façon de se déplacer est de faire:

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

Le ls -1 (moins un) garantit qu'il n'y a qu'un seul nom de fichier sur chaque ligne. Si vous avez des alias masqués pour la commande ls, vous pouvez avoir plusieurs noms de fichiers sur une seule ligne et déplacer par inadvertance un fichier que vous n'aviez pas l'intention de déplacer.

5
AggieBill
find -type f -name "[range]" -exec mv {} target-directory ';'

cette commande déplacera les noms de fichier avec n'importe quel motif/plage dans le répertoire cible.

par exemple.

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

il déplacera les fichiers portant des noms tels que file1, file2 ... file50000 vers target-directory.

3
user734124

Vous pouvez utiliser la sortie de ls pour entrer dans mv commnad

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

La commande entre $() renvoie une liste des noms de fichiers correspondant à votre recherche, qui peut être fournie en tant que paramètre pour la commande mv.

2
Fuad Saud

Le moyen le plus simple est comme ça

mv {file1,file2,file3} DESTINATION

ou répertoire

mv {directory1,directory2,directory3} DESTINATION

ou les deux fichiers et répertoires

mv {file1,file2,file3,directory1,directory2,directory3} DESTINATION

J'espère que cela t'aides

1
Sabrina

En utilisant cette commande, vous pouvez déplacer plusieurs fichiers.

mv SourceFilenames ~DestinationPath

1
Rajanand