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

116

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, donc je peux 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)?

    
posée gilad hoch 08.11.2012 - 14:13
la source

11 réponses

84

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 plusieurs caractères , cela signifie zéro ou plusieurs caractères , suivi de IDENTIFIER , suivi de zéro ou plus caractères .

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

    
réponse donnée Evandro Silva 08.11.2012 - 14:33
la source
165

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 affichera une nouvelle ligne pour chaque correspondance.

    
réponse donnée tuomaz 14.11.2012 - 12:07
la source
20

Vous pouvez utiliser des jokers .

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

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

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

Modifier

Pour répondre au commentaire.

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

    
réponse donnée Achu 08.11.2012 - 14:21
la source
15

Dans le cas où vous souhaitez déplacer un ensemble de fichiers non pertinents (pas de modèle commun dans les noms et les types), vous pouvez faire comme M. Rajanand a dit: allez d'abord dans le répertoire qui contient les fichiers que vous voulez 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 d'accès à chaque fichier dans la commande de déplacement

    
réponse donnée Ismail AL-taharwa 26.03.2014 - 05:03
la source
10

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
    
réponse donnée Blake Frederick 20.01.2015 - 17:11
la source
7

Utilisez cette commande:

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

Cependant, ls n'est pas recommandé pour ce type d'utilisation. Utilisez plutôt la commande find .

    
réponse donnée ignite 08.11.2012 - 14:44
la source
5

Si vous avez tant de fichiers à déplacer, vous pouvez en avoir trop pour la commande mv (ou d'autres commandes comme rm ). Je suggère d'utiliser xargs pour déplacer chaque fichier individuellement dans une boucle comme si c'était le cas. Une façon de contourner cela est de faire:

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

Le ls -1 (moins un) garantit qu’il n’ya 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.

    
réponse donnée AggieBill 14.11.2012 - 11:05
la source
2

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 et peut être fournie comme paramètre pour la commande mv.

    
réponse donnée Fuad Saud 13.11.2012 - 20:38
la source
2
find -type f -name "[range]" -exec mv {} target-directory ';'

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

par exemple.

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

il déplace les fichiers avec des noms comme file1 , file2 ... file50000 à target-directory .

    
réponse donnée user734124 07.09.2017 - 16:51
la source
1

Cette commande vous permet de déplacer plusieurs fichiers.

mv SourceFilenames ~DestinationPath

    
réponse donnée Rajanand 14.11.2012 - 11:13
la source
0

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

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

(testé dans Ubuntu 16.04)

    
réponse donnée Sruli 01.12.2017 - 10:19
la source

Lire d'autres questions sur les étiquettes