GNU/Linux >> Tutoriels Linux >  >> Linux

Renommer des fichiers sous Linux avec une regex

Solution 1 :

J'avais l'habitude d'écrire des scripts perl pour ce faire, jusqu'à ce que je découvre la commande rename.

Il accepte une regex perl pour renommer :

pour cela, j'ai juste tapé deux commandes :

rename 's/(\w+)-(\w+)-(\d\d)-(\d{4})-NODATA.txt\$1.$4$3$2.log$//' *
rename 'y/A-Z/a-z/' *.log

Pour certaines distributions cependant, rename n'a pas cette fonctionnalité (voir sa page de manuel), et vous devrez peut-être installer perl-rename ou prename .

Solution 2 :

mmv est un utilitaire Linux standard pour déplacer/renommer plusieurs fichiers. Il est disponible depuis les dépôts pour la plupart des distributions. Pour votre exemple ci-dessus, vous pourriez faire :

mmv '*-Log-*-*-*-NODATA.txt' '#l1.#4#3#2.log'

Pour plus d'informations, lisez cet article de Debaday ou la page de manuel.

Solution 3 :

Comme je n'ai pas de commande de renommage, je m'appuie sur ceci :

for myfile in /my/folder/*; do
    target=$(echo $myfile|sed -e 's/foo/bar/g')
    mv "$myfile" "$target"
done

Solution 4 :

rename util n'est pas très "standard". Chaque distribution est livrée avec un rename différent outil. Par exemple, ici sur Gentoo, rename est de sys-apps/util-linux package et ne prend pas en charge les regex.

Hamish Downer suggéré mmv , il semble utile, spécialement pour une utilisation à l'intérieur des scripts.

D'autre part, pour le cas général, vous voudrez peut-être renameutils. Il a qmv et qcp commandes, qui ouvriront un éditeur de texte de votre choix (ma préférence :Vim) et vous permettront d'y modifier les noms de fichiers de destination. Après avoir enregistré et fermé l'éditeur, qmv /qcp fera tout le renommage.

Les deux mmv et qmv sont assez intelligents pour renommer les fichiers dans le bon ordre et également pour détecter les changements de nom circulaires, et créeront automatiquement un fichier temporaire si nécessaire.


Linux
  1. Comment chiffrer des fichiers avec gocryptfs sous Linux

  2. Comment renommer des fichiers sous Linux

  3. Renommer de nombreux fichiers sous Linux selon un modèle

  4. Existe-t-il une commande linux comme mv mais avec regex ?

  5. Fichiers qui disparaissent sur le serveur Linux

Tutoriel de commande Linux zforce avec exemples

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

Comment renommer un ou plusieurs fichiers sous Linux

Linux renommer l'extension de plusieurs fichiers

Commande lsof sous Linux avec exemples

Commande comm Linux avec exemples