GNU/Linux >> Tutoriels Linux >  >> Linux

Renommer de nombreux fichiers sous Linux selon un modèle

Je ne les ai pas testés, donc j'ai mis echo au début des commandes afin que vous puissiez les essayer avant de supprimer l'écho pour les exécuter pour de vrai.

  1. for f in *v9.zip; do echo mv "${f}" "${f%v9.zip}.zip"; done
    
  2. for f in *_*; do echo mv "${f}" "${f//_/-}"; done
    

En ce qui concerne votre troisième problème, je suis sûr que cela peut être fait aussi, mais peut-être qu'une approche plus sophistiquée que les one-liners bruts aidera, comme @tchrist l'a mentionné.


Il y a un rename commande fournie avec la plupart des distributions basées sur Debian/Ubuntu qui a été écrite par Robin Barker sur la base du code original de Larry Wall datant d'environ 1998 (!).

Voici un extrait de la documentation :

  "rename" renames the filenames supplied according to the rule specified as the first argument.  The perlexpr argument is a Perl expression which is expected to modify the $_ string in Perl for at least some of the filenames
  specified.  If a given filename is not modified by the expression, it will not be renamed.  If no filenames are given on the command line, filenames will be read via standard input.

  For example, to rename all files matching "*.bak" to strip the extension, you might say

          rename 's/\.bak$//' *.bak

  To translate uppercase names to lower, you'd use

          rename 'y/A-Z/a-z/' *

Il utilise perl pour que vous puissiez utiliser des expressions perl pour correspondre au modèle, en fait je pense que cela fonctionne un peu comme les scripts de tchrist.

Un autre ensemble d'outils vraiment utile pour renommer des fichiers en bloc est la collection renameutils d'Oskar Liljeblad. Le code source est hébergé par la Free Software Foundation. De plus, de nombreuses distributions (en particulier les distributions basées sur Debian/Ubuntu) ont un renameutils package avec ces outils.

Sur l'une de ces distributions, vous pouvez l'installer avec :

$ sudo apt-get install renameutils

Et ensuite, pour renommer les fichiers, exécutez simplement cette commande :

$ qmv

Il ouvrira un éditeur de texte avec la liste des fichiers, et vous pourrez les manipuler avec la fonction de recherche et de remplacement de votre éditeur.


Ma solution préférée est mon propre renommer scénario. L'exemple le plus simple qui correspond à vos problèmes est celui-ci :

% rename 's/_/-/g' *
% rename 's/(\p{Lower})(\p{Upper})/$1 $2/g' *

Bien que je déteste vraiment les espaces blancs dans mes noms de fichiers, en particulier les espaces blancs verticaux :

 % rename 's/\s//g' *
 % rename 's/\v//g' *

etc. Il est basé sur un script de The Larry Wall, mais étendu avec des options, comme dans :

usage: /home/tchrist/scripts/rename [-ifqI0vnml] [-F file] perlexpr [files]
    -i          ask about clobbering existent files
    -f          force clobbers without inquiring
    -q          quietly skip clobbers without inquiring
    -I          ask about all changes
    -0          read null-terminated filenames
    -v          verbosely says what its doing 
    -V          verbosely says what its doing but with newlines between old and new filenames
    -n          don't really do it
    -m          to always rename
    -l          to always symlink
    -F path     read filelist to change from magic path(s)

Comme vous le voyez, cela peut changer non seulement les noms des fichiers, mais aussi l'endroit où les liens symboliques pointent en utilisant le même modèle. Vous n'êtes pas obligé d'utiliser un s/// modèle, même si c'est souvent le cas.

Les autres outils de ce répertoire sont principalement destinés au travail Unicode, dont certains sont très utiles.


Linux
  1. Renommer des fichiers pour avoir des extensions en minuscules avec "renommer" ?

  2. Comment renommer plusieurs fichiers à la fois sous Linux

  3. Metamorphose 2 - Renommer par lots vos fichiers et dossiers sous Linux

  4. Comment renommer plusieurs fichiers ensemble sous Linux en utilisant 3 méthodes

  5. Trouver plusieurs fichiers et les renommer sous Linux

Renommer la commande sous Linux (renommer plusieurs fichiers)

Commande Rm sous Linux

Comment renommer des fichiers en utilisant la ligne de commande sous Linux

Comment renommer un ou plusieurs fichiers sous Linux

8 méthodes pour renommer plusieurs fichiers à la fois sous Linux

Linux renommer l'extension de plusieurs fichiers