Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 11/11/2022, à 12:12

Tawal

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Vite fait, je vais manger :

$ find . -regex ".*[^(][0-9][0-9][0-9][0-9][^)].*" -exec rename -n "s/[^(]([0-9][0-9][0-9][0-9])[^)]/(\$1)/g" "{}" \+
rename(./BBfich123ab1234(xx, ./BBfich123a(1234)xx)
rename(./fich (test) 1234 (4567).txt, ./fich (test)(1234)(4567).txt)
rename(./fichier2666.txt, ./fichie(2666)txt)
rename(./FFfich5678ab134xx, ./FFfic(5678)b134xx)
rename(./fich1234data5678 et encore 4 chiffres 9876.ext_a_la_con58, ./fic(1234)at(5678)et encore 4 chiffres(9876)ext_a_la_con58)
rename(./CCfich123ab1234xx, ./CCfich123a(1234)x)
rename(./EEfic(h5678ab134xx, ./EEfic((5678)b134xx)
rename(./Test2/BBfich123ab1234(xx, ./Test2/BBfich123a(1234)xx)
rename(./Test2/fich (test) 1234 (4567).txt, ./Test2/fich (test)(1234)(4567).txt)
rename(./Test2/fichier2666.txt, ./Test2/fichie(2666)txt)
rename(./Test2/FFfich5678ab134xx, ./Test2/FFfic(5678)b134xx)
rename(./Test2/fich1234data5678 et encore 4 chiffres 9876.ext_a_la_con58, ./Test2/fic(1234)at(5678)et encore 4 chiffres(9876)ext_a_la_con58)
rename(./Test2/CCfich123ab1234xx, ./Test2/CCfich123a(1234)x)
rename(./Test2/EEfic(h5678ab134xx, ./Test2/EEfic((5678)b134xx)
rename(./Test2/fichier4656fff22.txt, ./Test2/fichie(4656)ff22.txt)
rename(./Test2/fichier14656.txt, ./Test2/fichie(1465).txt)
rename(./Test2/DDfich5678ab134xx, ./Test2/DDfic(5678)b134xx)
rename(./Test2/fichier4656.txt, ./Test2/fichie(4656)txt)
rename(./fichier4656fff22.txt, ./fichie(4656)ff22.txt)
rename(./fichier14656.txt, ./fichie(1465).txt)
rename(./DDfich5678ab134xx, ./DDfic(5678)b134xx)
rename(./fichier4656.txt, ./fichie(4656)txt)

Edit: C'est tout FAUX !
trop vite tongue

Dernière modification par Tawal (Le 11/11/2022, à 12:35)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#27 Le 11/11/2022, à 12:17

iznobe

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Merci et bon appetit wink

on se rapproche , mais doit y avoir encore un petit soucis vu :

rename(./Test2/fich1234data5678 et encore 4 chiffres 9876.ext_a_la_con58, ./Test2/fic(1234)at(5678)et encore 4 chiffres(9876)ext_a_la_con58)

il manque 2 lettres dans le renommage , ca devrait etre :(1234)data(5678)
d'' ailleurs , il manque aussi le point de l extension .

Dernière modification par iznobe (Le 11/11/2022, à 12:21)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#28 Le 11/11/2022, à 12:38

Tawal

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Là, c'est beaucoup mieux :

$ find . -type f -regex ".*[^(][0-9][0-9][0-9][0-9][^)].*" -exec rename -n "s/([^(])([0-9][0-9][0-9][0-9])([^)])/\$1(\$2)\$3/g" "{}" \+
rename(./BBfich123ab1234(xx, ./BBfich123ab(1234)(xx)
rename(./fich (test) 1234 (4567).txt, ./fich (test) (1234) (4567).txt)
rename(./fichier2666.txt, ./fichier(2666).txt)
rename(./FFfich5678ab134xx, ./FFfich(5678)ab134xx)
rename(./fich1234data5678 et encore 4 chiffres 9876.ext_a_la_con58, ./fich(1234)data(5678) et encore 4 chiffres (9876).ext_a_la_con58)
rename(./CCfich123ab1234xx, ./CCfich123ab(1234)xx)
rename(./EEfic(h5678ab134xx, ./EEfic(h(5678)ab134xx)
rename(./fichier4656fff22.txt, ./fichier(4656)fff22.txt)
rename(./fichier14656.txt, ./fichier(1465)6.txt)
rename(./DDfich5678ab134xx, ./DDfich(5678)ab134xx)
rename(./fichier4656.txt, ./fichier(4656).txt)

Reste encore à savoir comment réagir pour les séries de + de 4 chiffres ?
Il y a un exemple ci-dessus, pour l'instant, ça encadre les 4 premiers chiffres.

Edit:
Remplacement du résultat sans récurrence (plus clair) et ajout de l'option "-type f".

Edit2:
Pour compliquer la chose:
Est-ce possible de rencontrer xx(1234xx ou xx1234)xx ? Si oui, comment réagir ?

Dernière modification par Tawal (Le 11/11/2022, à 12:50)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#29 Le 11/11/2022, à 13:13

iznobe

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Tawal a écrit :

Là, c'est beaucoup mieux :

$ find . -type f -regex ".*[^(][0-9][0-9][0-9][0-9][^)].*" -exec rename -n "s/([^(])([0-9][0-9][0-9][0-9])([^)])/\$1(\$2)\$3/g" "{}" \+
rename(./BBfich123ab1234(xx, ./BBfich123ab(1234)(xx)
rename(./fich (test) 1234 (4567).txt, ./fich (test) (1234) (4567).txt)
rename(./fichier2666.txt, ./fichier(2666).txt)
rename(./FFfich5678ab134xx, ./FFfich(5678)ab134xx)
rename(./fich1234data5678 et encore 4 chiffres 9876.ext_a_la_con58, ./fich(1234)data(5678) et encore 4 chiffres (9876).ext_a_la_con58)
rename(./CCfich123ab1234xx, ./CCfich123ab(1234)xx)
rename(./EEfic(h5678ab134xx, ./EEfic(h(5678)ab134xx)
rename(./fichier4656fff22.txt, ./fichier(4656)fff22.txt)
rename(./fichier14656.txt, ./fichier(1465)6.txt)
rename(./DDfich5678ab134xx, ./DDfich(5678)ab134xx)
rename(./fichier4656.txt, ./fichier(4656).txt)

Reste encore à savoir comment réagir pour les séries de + de 4 chiffres ?
Il y a un exemple ci-dessus, pour l'instant, ça encadre les 4 premiers chiffres.

C ' est effectivement beaucoup mieux wink

Pour les series de + 4 chiffres , je pense que ne rien faire est le mieux , je n ' ai besoin ( normalement de ne traiter que les années , et l' an 10 000 n ' est pas pour demain ) , si erreur de frappe je corrigerai manuellement , ou bien si c' est possible , juste le signaler serait le top de façon a ce que je gere cela manuellement , ca ne doit pas arriver souvent .

Tawal a écrit :

Pour compliquer la chose:
Est-ce possible de rencontrer xx(1234xx ou xx1234)xx ? Si oui, comment réagir ?

tout est possible , mais en theorie non , reste que la pratique est generalement pas tout le temps en accord avec la theorie.
si le cas  xx(1234xx se presente , on en revient au meme resultat => (1234) idem pour le cas d ' une parenthèse fermante unique : xx1234)xx => (1234) ca serait la cerise sur le gateau , si ca ne le gere pas , ca n ' est pas bien grave . le plus gros sera deja fait .

Dernière modification par iznobe (Le 11/11/2022, à 13:54)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#30 Le 11/11/2022, à 13:59

Tawal

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Bon, j'ai concocté ceci :

find . -type f -regex ".*[^0-9][0-9][0-9][0-9][0-9]\([^0-9].*\|$\)"   -exec rename -n "s/\(([0-9][0-9][0-9][0-9])([^)]|$)/(\$1)\$2/g; s/([^(]|^)([0-9][0-9][0-9][0-9])\)/\$1(\$2)/g; s/([^(]|^)([0-9][0-9][0-9][0-9])([^)]|$)/\$1(\$2)\$3/g" "{}" \+

En voici un test (j'ai encore ajouté des fichiers) :

$ find . -type f -regex ".*[^0-9][0-9][0-9][0-9][0-9]\([^0-9].*\|$\)"   -exec rename -n "s/\(([0-9][0-9][0-9][0-9])([^)]|$)/(\$1)\$2/g; s/([^(]|^)([0-9][0-9][0-9][0-9])\)/\$1(\$2)/g; s/([^(]|^)([0-9][0-9][0-9][0-9])([^)]|$)/\$1(\$2)\$3/g" "{}" \+
rename(./BBfich123ab1234(xx, ./BBfich123ab(1234)(xx)
rename(./fich (test) 1234 (4567).txt, ./fich (test) (1234) (4567).txt)
rename(./fichier2666.txt, ./fichier(2666).txt)
rename(./5678fich, ./(5678)fich)
rename(./FFfich5678ab134xx, ./FFfich(5678)ab134xx)
rename(./fich(1234, ./fich(1234))
rename(./(5678fich, ./(5678)fich)
rename(./fich1234data5678 et encore 4 chiffres 9876.ext_a_la_con58, ./fich(1234)data(5678) et encore 4 chiffres (9876).ext_a_la_con58)
rename(./CCfich123ab1234xx, ./CCfich123ab(1234)xx)
rename(./fich1234, ./fich(1234))
rename(./EEfic(h5678ab134xx, ./EEfic(h(5678)ab134xx)
rename(./fich1234), ./fich(1234))
rename(./fich(5678, ./fich(5678))
rename(./fichier4656fff22.txt, ./fichier(4656)fff22.txt)
rename(./fich5678), ./fich(5678))
rename(./1234)fich, ./(1234)fich)
rename(./DDfich5678ab134xx, ./DDfich(5678)ab134xx)
rename(./fichier4656.txt, ./fichier(4656).txt)
$ 
$ ls -l
total 0
-rw-r--r-- 1 tawal tawal 0 11 nov.  13:57 '1234)fich'
-rw-r--r-- 1 tawal tawal 0 11 nov.  14:01  5678fich
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18 'AAfich123ab(1234)xx'
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18 'BBfich123ab1234(xx'
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18  CCfich123ab1234xx
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18  DDfich5678ab134xx
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18 'EEfic(h5678ab134xx'
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18  FFfich5678ab134xx
-rw-r--r-- 1 tawal tawal 0 11 nov.  14:01  fich1234
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:21 'fich1234data5678 et encore 4 chiffres 9876.ext_a_la_con58'
-rw-r--r-- 1 tawal tawal 0 11 nov.  13:58 'fich1234)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  13:20 'fich5678)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18  fichier46.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18  fichier266.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18  fichier2666.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18  fichier4656.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18  fichier4656fff22.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18  fichier14656.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18 'fichier(2225).txt'
-rw-r--r-- 1 tawal tawal 0 11 nov.  11:18 'fichier(3000).txt'
-rw-r--r-- 1 tawal tawal 0 11 nov.  13:54 'fich 12345678 (8chifres)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  12:05 'fich (test) 1234 (4567).txt'
-rw-r--r-- 1 tawal tawal 0 11 nov.  13:19 'fich(1234'
-rw-r--r-- 1 tawal tawal 0 11 nov.  13:58 'fich(5678'
-rw-r--r-- 1 tawal tawal 0 11 nov.  13:57 '(5678fich'
$

Edit: consolidation des regex et mise à jour du résultat.
Il doit certainement y avoir plus simple, je ne suis pas expert des regex.
Et ça devient assez complexe pour moi.
Peut-être que de plus aguerris viendront proposer plus simple wink

Dernière modification par Tawal (Le 11/11/2022, à 14:11)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#31 Le 11/11/2022, à 14:18

iznobe

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Ca semble vraiment pas mal là .

Par contre sur des fichiers au hasard de mon repertoire telechargements j ' obtiens par exemple :

rename(./arduino-ide_2.0.1_Linux_64bit/resources/app/node_modules/es-abstract/2017/EnumerableOwnProperties.js, ./arduino-ide_2.0.1_Linux_64bit/resources/app/node_modules/es-abstract/(2017)/EnumerableOwnProperties.js)

j ' en deduis donc qu ' il renomme un dossier : 2017 en (2017) .


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#32 Le 11/11/2022, à 14:57

Tawal

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Ah oui, je n'avais pas pensé à ça tongue

J'ai encore modifiée la commande (plus robuste amha) et je règle le problème du renommage des dossiers (qui amènerai une erreur d'ailleurs).

find . -type f -regex ".*[^0-9][0-9][0-9][0-9][0-9]\([^0-9].*\|$\)"   -execdir rename "s/([0-9][0-9][0-9][0-9])/(\$1)/g; s/\(\(([0-9][0-9][0-9][0-9])/\(\$1/g; s/([0-9][0-9][0-9][0-9])\)\)/\$1\)/g" "{}" \+

Un test  en réel (j'ai des erreurs car des fichiers finissent avec le même nom donc pas renommés) :

$ find . -type f -regex ".*[^0-9][0-9][0-9][0-9][0-9]\([^0-9].*\|$\)"   -execdir rename "s/([0-9][0-9][0-9][0-9])/(\$1)/g; s/\(\(([0-9][0-9][0-9][0-9])/\(\$1/g; s/([0-9][0-9][0-9][0-9])\)\)/\$1\)/g" "{}" \+
./(5678fich not renamed: ./(5678)fich already exists
./fich1234 not renamed: ./fich(1234) already exists
./fich1234) not renamed: ./fich(1234) already exists
./fich5678) not renamed: ./fich(5678) already exists
$
$ ls -l
total 4,0K
drwxr-xr-x 3 tawal tawal 4,0K 11 nov.  14:44  Test2
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'AAfich123ab(1234)xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'BBfich123ab(1234)(xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'CCfich123ab(1234)xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'DDfich(5678)ab134xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'EEfic(h(5678)ab134xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'FFfich(5678)ab134xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38  fich1234
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'fich1234)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'fich5678)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'fich12345678(8chifres)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38  fichier46.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38  fichier266.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38  fichier14656.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'fichier(2225).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'fichier(2666).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'fichier(3000).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'fichier(4656).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'fichier(4656)fff22.txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'fich(1234)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'fich(1234)data(5678)etencore4chiffres(9876).ext_a_la_con58'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'fich(5678)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 'fich(test)(1234)(4567).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:41 '(1234)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 '(1234)fich'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:41 '(1234) (5678) (9876) (5432)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 '(5678fich'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:41 '(5678)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  14:38 '(5678)fich'
$ 
$ ls Test2/
2017
$ ls Test2/2017/
'fich(1234)'
$

Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#33 Le 11/11/2022, à 15:18

iznobe

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

tu n ' as pas mis l' option " -n " de test dans ton dernier message ! tongue c ' etait pour voir si je suivais toujours correctement ? wink

je vais tester en ajoutant l' option - n , merci pour ta correction .

EDIT : là ca parait vraiment bien big_smile

si j ' essaie de traduire la partie find :

find . -type f -regex ".*[^0-9][0-9][0-9][0-9][0-9]\([^0-9].*\|$\)"

trouve tous les fichiers correspondant a l' expression reguliere suivante : tout sauf ce qui commence par un chiffre suivi de 4 chiffre ( on ne prend donc pas une serie de 5 chiffres ) suivi de tout , pour la suite , ca reste abstrait :

\|$\)

Bon j ' aimerais bien comprendre mais l' exemple parait complexe , faudrait surement que je me m ' y mette progressivement.

Cela dit , l ' année 2022 n ' est pas encore terminée , j ' aimerais modifier tous les fichiers sauf les occurences " 2022 " dedans le nom , c ' est possible sans tout retransformer ? il peut y avoir d ' autres années de specifier dans le nom par contre .
j ' ai tenter de faire :

find . -type f -regex ".^2022." ".*[^0-9][0-9][0-9][0-9][0-9]\([^0-9].*\|$\)"
find . -type f -regex ".*^2022 [^0-9][0-9][0-9][0-9][0-9]\([^0-9].*\|$\)"

mais comme c' est au pifometre , forcement ca ne marche pas , ou dois je placer le pattern pour que ca soit pris en compte stp ?

Promis , je ne rajoute plus rien ensuite tongue

Dernière modification par iznobe (Le 11/11/2022, à 16:14)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#34 Le 11/11/2022, à 16:10

Tawal

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Je patauge tongue
Mes regex ne sont pas assez solides, il y a encore des cas qui passent au travers.
Ça devient compliqué à mon niveau.


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#35 Le 11/11/2022, à 16:15

Hizoka

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Le problème c'est que les demandes évolues en permanence, il faut une description claire et arrêtée des besoins.

Car là on avance un peu à l'aveugle, ça prend du temps de tout suivre et de tout modifier...

si tu veux exclure quelque chose avec find -not -iname ou -not -regex par ex.

Et un conseil, renseigne toi sur les regex, c'est super utile même avec un petit niveau.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#36 Le 11/11/2022, à 16:17

iznobe

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

je comprends bien que ce n' est pas aussi simple qu ' il y parait .
Si toi tu patauges , alors moi que devrais je dire ???  lol tongue

Pas de soucis , je vais essayer de faire ca en plusieurs etapes , en m' aidant de inviska rename . j ' y passerai un peu de temps , ca tombe bien c' est le weekend wink

Merci encore et bon weekend .


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#37 Le 11/11/2022, à 16:22

iznobe

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Hizoka a écrit :

Le problème c'est que les demandes évolues en permanence, il faut une description claire et arrêtée des besoins.

oui le probleme c' est qu ' on ne se rend pas forcement compte des besoins necessaires avant d' avoir mis le nez dedans ...


Hizoka a écrit :

Car là on avance un peu à l'aveugle, ça prend du temps de tout suivre et de tout modifier...

je me doute bien .

Hizoka a écrit :

si tu veux exclure quelque chose avec find -not -iname ou -not -regex par ex.

le soucis c ' est que je ne veux pas completement exclure , juste ne pas renommer les occurences de 4 chiffres qui sont : 2022 .

Hizoka a écrit :

Et un conseil, renseigne toi sur les regex, c'est super utile même avec un petit niveau.

je consulte pour cela sur le net . c' est clair que c ' est super utile . j ' ai souvent ce genre de probleme de manip a faire en plus .

Merci pour votre aide a tous en tout cas .

du coup un truc simple peut etre ( enfin j' espere ) , suite aux changement precedents je desire repasser ce qui contient : (2022) , comme si il n' avait pas été traité donc en : 2022 .

j ' ai le debut : mais je n' arrive pas a gerer la partie rename :

find . -type f -regex ".*2022.*" -exec rename -n "s/(?????)\$3/g" "{}" \+

que faudrait il mettre pour que cela aboutisse ?

Dernière modification par iznobe (Le 11/11/2022, à 16:33)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#38 Le 11/11/2022, à 17:05

Tawal

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Re,

J'adore gratter ce genre de truc.
Essaie ceci :

find . -type f \( ! -regex ".*/2022/.*" -regex  ".*/\(.*[^0-9]\|\)[0-9][0-9][0-9][0-9]\([^0-9/][^/]*\|\)" \) -execdir rename -n "s/([0-9][0-9][0-9][0-9])/(\$1)/g; s/\(\(([0-9][0-9][0-9][0-9])/\(\$1/g; s/([0-9][0-9][0-9][0-9])\)\)/\$1\)/g" "{}" \+

Ça donne ceci en test réel (sans option -n à rename) :

$ ls -Rl
.:
total 8,0K
drwxr-xr-x 2 tawal tawal 4,0K 11 nov.  17:03  2022
drwxr-xr-x 3 tawal tawal 4,0K 11 nov.  17:00  Test2
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 '1234)fich'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59  5678fich
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'AAfich123ab(1234)xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'BBfich123ab1234(xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59  FFfich5678ab134xx
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59  fich0123
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59  fich1234data5678etencore4chiffres9876.ext_a_la_con58
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fich3456)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fich12345678(8chifres)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59  fichier46.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59  fichier4656.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59  fichier14656.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fichier(2225).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fich(2345'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fich(test)1234(4567).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 '(4567fich'

./2022:
total 0
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 '1234)fich'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  5678fich
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'AAfich123ab(1234)xx'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'BBfich123ab1234(xx'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  FFfich5678ab134xx
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  fich0123
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  fich1234data5678etencore4chiffres9876.ext_a_la_con58
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'fich3456)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'fich12345678(8chifres)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  fichier46.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  fichier4656.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  fichier14656.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'fichier(2225).txt'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'fich(2345'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'fich(test)1234(4567).txt'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 '(4567fich'

./Test2:
total 4,0K
drwxr-xr-x 2 tawal tawal 4,0K 11 nov.  16:59  2017
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 '1234)fich'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00  5678fich
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'AAfich123ab(1234)xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'BBfich123ab1234(xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00  FFfich5678ab134xx
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00  fich0123
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00  fich1234data5678etencore4chiffres9876.ext_a_la_con58
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fich3456)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fich12345678(8chifres)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00  fichier46.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00  fichier4656.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00  fichier14656.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fichier(2225).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fich(2345'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fich(test)1234(4567).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 '(4567fich'

./Test2/2017:
total 0
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 '1234)fich'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59  5678fich
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'AAfich123ab(1234)xx'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'BBfich123ab1234(xx'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59  FFfich5678ab134xx
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59  fich0123
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59  fich1234data5678etencore4chiffres9876.ext_a_la_con58
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fich3456)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fich12345678(8chifres)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59  fichier46.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59  fichier4656.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59  fichier14656.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fichier(2225).txt'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fich(2345'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fich(test)1234(4567).txt'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 '(4567fich'
$ 
$ find . -type f \( ! -regex ".*/2022/.*" -regex  ".*/\(.*[^0-9]\|\)[0-9][0-9][0-9][0-9]\([^0-9/][^/]*\|\)" \) -execdir rename "s/([0-9][0-9][0-9][0-9])/(\$1)/g; s/\(\(([0-9][0-9][0-9][0-9])/\(\$1/g; s/([0-9][0-9][0-9][0-9])\)\)/\$1\)/g" "{}" \+
$ 
$ ls -Rl
.:
total 8,0K
drwxr-xr-x 2 tawal tawal 4,0K 11 nov.  17:03  2022
drwxr-xr-x 3 tawal tawal 4,0K 11 nov.  17:04  Test2
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'AAfich123ab(1234)xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'BBfich123ab(1234)(xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'FFfich(5678)ab134xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fich12345678(8chifres)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59  fichier46.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59  fichier14656.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fichier(2225).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fichier(4656).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fich(0123)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fich(1234)data(5678)etencore4chiffres(9876).ext_a_la_con58'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fich(2345)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fich(3456)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 'fich(test)(1234)(4567).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 '(1234)fich'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 '(4567)fich'
-rw-r--r-- 1 tawal tawal    0 11 nov.  16:59 '(5678)fich'

./2022:
total 0
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 '1234)fich'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  5678fich
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'AAfich123ab(1234)xx'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'BBfich123ab1234(xx'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  FFfich5678ab134xx
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  fich0123
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  fich1234data5678etencore4chiffres9876.ext_a_la_con58
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'fich3456)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'fich12345678(8chifres)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  fichier46.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  fichier4656.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03  fichier14656.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'fichier(2225).txt'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'fich(2345'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 'fich(test)1234(4567).txt'
-rw-r--r-- 1 tawal tawal 0 11 nov.  17:03 '(4567fich'

./Test2:
total 4,0K
drwxr-xr-x 2 tawal tawal 4,0K 11 nov.  17:04  2017
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'AAfich123ab(1234)xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'BBfich123ab(1234)(xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'FFfich(5678)ab134xx'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fich12345678(8chifres)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00  fichier46.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00  fichier14656.txt
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fichier(2225).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fichier(4656).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fich(0123)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fich(1234)data(5678)etencore4chiffres(9876).ext_a_la_con58'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fich(2345)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fich(3456)'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 'fich(test)(1234)(4567).txt'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 '(1234)fich'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 '(4567)fich'
-rw-r--r-- 1 tawal tawal    0 11 nov.  17:00 '(5678)fich'

./Test2/2017:
total 0
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'AAfich123ab(1234)xx'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'BBfich123ab(1234)(xx'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'FFfich(5678)ab134xx'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fich12345678(8chifres)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59  fichier46.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59  fichier14656.txt
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fichier(2225).txt'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fichier(4656).txt'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fich(0123)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fich(1234)data(5678)etencore4chiffres(9876).ext_a_la_con58'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fich(2345)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fich(3456)'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 'fich(test)(1234)(4567).txt'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 '(1234)fich'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 '(4567)fich'
-rw-r--r-- 1 tawal tawal 0 11 nov.  16:59 '(5678)fich'
$

Edit:
Comme la demande évolue à chaque post ...
Cette proposition correspond à :
   - mettre les parenthèses là il faut
   - éviter un dossier 2022

J'ai pas compris la nouvelle demande !?

Edit2:
La commande plus lisible :

find . -type f \( ! -regex ".*/2022/.*" -regex  ".*/\(.*[^0-9]\|\)[0-9][0-9][0-9][0-9]\([^0-9/][^/]*\|\)" \) \
       -execdir rename -n "s/([0-9][0-9][0-9][0-9])/(\$1)/g;                                                 \
                           s/\(\(([0-9][0-9][0-9][0-9])/\(\$1/g;                                             \
                           s/([0-9][0-9][0-9][0-9])\)\)/\$1\)/g" '{}' \+

Edit3:
Version un peu plus courte :

find . -type f \( ! -regex ".*/2022/.*" -regex  ".*/\(.*[^0-9]\|\)[0-9][0-9][0-9][0-9]\([^0-9/][^/]*\|\)" \) \
       -execdir rename -n "s/([0-9]{4})/(\$1)/g;                                                             \
                           s/\(\(([0-9]{4})/\(\$1/g;                                                         \
                           s/([0-9]{4})\)\)/\$1\)/g" '{}' \+

Dernière modification par Tawal (Le 11/11/2022, à 17:38)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#39 Le 11/11/2022, à 18:19

iznobe

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

C 'etait pour les fichiers contenant dans leur nom 2022 , mais je vais peaufiner a la main .
faire la manip inverse du depart car là j' ai appliquer les changements .

une commande " simple " et recursive pour passer les fichiers contenant donc maintenant " (2022) " uniquement => " 2022 " ( enlever les parentheses autour de (2022) ) .


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#40 Le 11/11/2022, à 18:34

Hizoka

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Pour ça, tu peux simplement faire :

rename -n "s/\(2022\)/2022/g" *

ou avec find si c'est recursif.

Dernière modification par Hizoka (Le 11/11/2022, à 18:35)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#41 Le 11/11/2022, à 18:35

Tawal

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

La commande pour revenir en arrière sur 2022 :

find . -type f -name "*(2022)*" -execdir rename -n "s/\((2022)\)/\$1/g" '{}' \+

Teste, si ça te va, tu ôtes l'option "-n" à rename.


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#42 Le 11/11/2022, à 18:42

iznobe

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

oui , j' ai besoin du recursif .

Tawal a écrit :

La commande pour revenir en arrière sur 2022 :

find . -type f -name "*(2022)*" -execdir rename -n "s/\((2022)\)/\$1/g" '{}' \+

Teste, si ça te va, tu ôtes l'option "-n" à rename.

super ca marche ! impec merci beaucoup big_smile


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#43 Le 13/11/2022, à 14:49

iznobe

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Bonjour , je suis en train d' aprendre les expressions regulieres . bon c ' est pas non plus super compliqué .
Par contre j' avoue que avec les exemples de ce post et en particulier la partie suivant :

rename -n

je suis un peu perdu .

j ' ai a nouveau besoin de faire une modif ... c' est pourtant tres simple j ' ai le motif de recherche suivant :

find . -type f  -regex ".* \.[am].*"

qui rehcherche donc un espace , suivi d' un point suivi soit d' un a soit d' un m .
j ' aimerais renommer en la meme chose , mais sans l' espace de depart , sauf que comme je n' ai rien compris a comment fonctionne rename , mes differents test aboutissent tous a un echec ...

Au passage si je pouvais avoir l ' explication qui va avec pour la partie rename et les variables qui vont avec , je prends avec grand plaisir , ca m' evitera de revenir vous emebeter regulierement roll e

Dernière modification par iznobe (Le 13/11/2022, à 14:51)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#44 Le 13/11/2022, à 15:09

Tawal

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Hello,

Ta commande find recherche les fichiers dont la séquence " .a" ou " .m" apparaît dans le nom (chemin compris).
Il faut utiliser -execdir afin de ne pas agir sur le chemin du fichier.
Ensuite, il faut remplacer la séquence par celle que tu veux :

rename -s "s/ (\.[am])/\$1/"

Donc ta commande devient :

find . -type f  -regex ".* \.[am].*" -execdir rename -s "s/ (\.[am])/\$1/" '{}' \+

Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#45 Le 13/11/2022, à 15:17

Watael

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

rename -s 's/ (\.[am])/$1/'

ce n'est pas grand-chose : entre apostrophes, il n'est plus nécessaire de protéger le Développement de paramètres que pourrait interpréter le shell. smile

Dernière modification par Watael (Le 13/11/2022, à 15:18)


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#46 Le 13/11/2022, à 15:18

iznobe

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Coucou ,

Tawal a écrit :

Ta commande find recherche les fichiers dont la séquence " .a" ou " .m" apparaît dans le nom (chemin compris).
Il faut utiliser -execdir afin de ne pas agir sur le chemin du fichier.

merci pour cette précision qui est effectivement importante , sinon bonjour la cata ...

Tawal a écrit :

Ensuite, il faut remplacer la séquence par celle que tu veux :

rename -s "s/ (\.[am])/\$1/"

en admettant que la sequence que je desire est encadrée par les parentheses : " (\.[am]) "
l ' option -s de rename , c' est pour indiquer de remplacer , mais tout le reste ???
"s/ (sequence])/\$1/"

"$1" represente la sortie de find ?

Merci pour la commande qui fonctionne a merveille wink mais il ne faut pas d' option "-s " :

Unknown option: s

Dernière modification par iznobe (Le 13/11/2022, à 15:23)


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#47 Le 13/11/2022, à 15:44

Tawal

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Merci Watael, c'est tellement évident quand on l'a sous les yeux. roll

@iznobe : oups, c'était l'option -n que je voulais utiliser pour simuler d'abord.
Décorticage de la commande qui est un peu mieux ainsi d'ailleurs (plus robuste) :

find . -type f  -name "* \.[am]*" -execdir rename -n "s/ (\.[am])/\$1/" '{}' \+

ainsi on est sûr que la correspondance ne se fera pas sur le chemin du fichier mais que sur son nom.

 's/ (\.[am])/$1/'

   - le s indique qu'on va faire une substitution, synatxe = s/motif_à_remplacer/motif_remplaçant/
   - (\.[am]) est une sous-expression qui peut être rappelée par référence arrière. C'est le fait de mettre l'expression entre parenthèses qui crée la sous-expression.
   - $1 est l'appel par référence arrière de la sous-expression n°1 (ici on n'a qu'une seule sous-expression). $1 correspond donc à ".a" ou ".m". L'espace n'étant pas compris dans les parenthèses

On aurait aussi pu écrire une suite de substitution littérales :

s/ \.a/\.a/; s/ \.m/\.m/

Les expressions régulières sont pas mal documentées dans le man de grep :

man --pager='less -p "^EXPRESSIONS"' grep

Dernière modification par Tawal (Le 13/11/2022, à 15:54)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#48 Le 13/11/2022, à 15:53

iznobe

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

merci @Tawal pour l' explication . et pour la page man des expressions wink

je comprends mieux pourquoi je ne voyais pas a quoi correspondait cette variable $1 ... encore faut il connaitre ce principe de rappel arriere d' expression . important dans ce cas là et certainement pas le seul .
ca m' explique aussi bien mieux la fameuse ligne a 3 expressions wink

je vais aller voir ca de ce pas la page man de grep et des expressions .
Merci pour tout smile


retour utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#49 Le 13/11/2022, à 16:00

Tawal

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

Attention !

s/expr1/expr2/

est une commande de rename (on la retrouve aussi dans sed).
expr1 et expr2 sont les expressions rationnelles.
Et il y a aussi une différence entre motif et expression régulière.
On voit dans "-name "* \.[am]*" un motif.
Tandis que dans la commande s de rename, on voit une expression régulière et un appel par référence arrière à la sous-expression n°1.


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#50 Le 13/11/2022, à 16:13

Watael

Re : [ resolu ] renommer fichiers comportant 4 chiffres consecutifs

expr1 est une regex, pas expr2.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne