4 votes

Commande Linux mv pour déplacer plusieurs fichiers avec des extensions différentes

Je me demande s'il est possible d'utiliser bash pour mv plusieurs fichiers avec des extensions différentes dans un même répertoire, par exemple
mv 1.png 2.jpg dir/

sauf correspondance avec de nombreux fichiers

1voto

slhck Points 209720

Utilisation globules ! Un glob est un modèle qui s'étend à plusieurs noms de fichiers. C'est aussi très bien expliqué ici .

Par exemple * correspond à n'importe quelle chaîne de n'importe quelle longueur, et vous pourriez déplacer tous les fichiers JPG et PNG quelque part avec :

mv *.jpg *.png dir

L'utilisation de la extglob dans Bash, vous pouvez aussi faire :

shopt -s extglob
mv *(*.jpg|*.png) dir

1voto

La méthode la plus simple consiste à utiliser un mélange d'expansion d'accolades et de globbing.

mv -iv -- *.{png,jpg} dir/

Ce qui se traduit par

mv -iv -- *.png *.jpg dir/

Ce qui est étendu à (tous les fichiers -- y compris les répertoires/symlincs -- se terminant par .png ou .jpg )

mv -iv -- 1.png 2.jpg ... dir/

Remarque : -iv -- est inclus pour la sécurité/verbosité

-i, --interactive
       prompt before overwrite
-v, --verbose
       explain what is being done
[GETOPT] The special argument "--" forces an end of option-scanning 
         regardless of the scanning mode. 
         (Meaning everything after it gets treated as an argument)

-1voto

Ohad Cohen Points 433

Oui, c'est le cas.

$ tree
.
 a.png
 b.jpg
 dir

1 directory, 2 files
$ mv a.png b.jpg dir
$ tree
.
 dir
     a.png
     b.jpg

1 directory, 2 files
$ 

mv ne se soucie pas des extensions de fichiers, tout ce qu'il connaît est le fichier original et le répertoire cible demandé par vous.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X