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, ce qui me permet ls | grep IDENTIFIER
d'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)?
la source
mv file1 file2 ... destination
ls
.Vous pouvez utiliser des 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/
la source
ABC-IDENTIFIER-XYZ.ext
et certains ontIDENTIFIER-XYZ.ext
tous des extensions différentes, principalementxml
ouproperties
..xml
fichiers (par exemple), je ne veux pas bouger.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.
Si les fichiers sont dispersés dans des répertoires différents, il vous suffit de spécifier le chemin d'accès de chaque fichier dans la commande de déplacement.
la source
J'utilise la technique de tuomaz, mais légèrement modifiée:
Je trouve cela plus facile à retenir et plus difficile à bousiller car il utilise le même ordre que l'opération vanilla mv:
la source
mv
ne mentionne aucune-t
option.Utilisez cette commande:
Cependant, ls n’est pas recommandé pour ce type d’utilisation. Utilisez la commande find à la place.
la source
ls
n'est pas recommandé pour ce type d'utilisation. Si vous voulez lister les fichiers, surtout avec ungrep
retard, utilisezfind . -name \*IDENTIFIER\*
.ls
Si vous avez autant de fichiers à déplacer, vous pouvez en avoir trop pour la
mv
commande (ou d'autres commandes similairesrm
). Je suggère d'utiliserxargs
pour déplacer chaque fichier individuellement dans une boucle comme à la mode. Une façon de se déplacer est de faire:Le
ls -1
(moins un) garantit qu’il n’ya qu’un seul nom de fichier sur chaque ligne. Si vous avez masqué des alias pour lals
commande, 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.la source
Si les fichiers sont dans le même répertoire, vous pouvez utiliser
(testé dans Ubuntu 16.04)
la source
cette commande déplacera les noms de fichiers avec n'importe quel motif / plage dans le répertoire cible.
par exemple.
il déplacera des fichiers avec des noms comme
file1
,file2
...file50000
verstarget-directory
.la source
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 fichier correspondant à votre recherche, qui peut être fournie en tant que paramètre pour la commande mv.la source
ls
En utilisant cette commande, vous pouvez déplacer plusieurs fichiers.
mv SourceFilenames ~DestinationPath
la source
Le moyen le plus simple est comme ça
ou répertoire
ou les deux fichiers et répertoires
J'espère que cela t'aides
la source