2016-04-04 2 views
1

J'ai un tas de fichiers avec une chaîne XXX au nom, comme:Copier les fichiers `* XXX *` `* à YYY *`

  • someXXXfile
  • someotherXXXfile
  • ...

Je veux prendre tous ces fichiers et les copier dans le même dossier, en changeant XXX par une autre chaîne YYY, donc j'obtenir dans le même dossier:

  • someXXXfile
  • someotherXXXfile
  • ...
  • someYYYfile
  • someotherYYYfile
  • ...

Comment puis-je faire?

Répondre

4

En BASH vous pouvez faire:

for f in *XXX*; do echo mv -i "$f" "${f/XXX/YYY}"; done 

Si vous avez rename utilitaire utilisez alors:

rename 's/XXX/YYY/' *XXX* 
+1

Merci c'est exactement ce que je voulais. – Jepessen

+1

Veuillez toujours utiliser 'mv -i' pour les déplacements groupés comme celui-ci, ainsi il vous avertira de tout conflit de noms plutôt que d'écraser silencieusement des fichiers. –

+0

Merci @GordonDavisson pour le conseil (édité) – anubhava

2

Utilisez la commande rename super utile. Pensez-y comme renommer de XXX à YYY sur tous les fichiers.

rename XXX YYY * 

Si vous cherchez à copie en plus de déplacer, copier dans une certaine sous-répertoire d'abord, puis revenir en arrière.