#1 Le 11/01/2020, à 06:37
- Avotrafa
[Résolu] Renommer tous les fichiers "*.pdf"
Bonjour ,
Je viens de récupérer tous mes fichiers venant d'un carte "micro SD corrompu", j'ai besoin de votre aide sur un script qui permet renommer tous les noms de fichier en ".pdf".
Exemple: [*] f10412928_Je_m_incline --> Je-m_incline
f10412992_Je_m_incline_Thomas_Blanc --> Je_m_incline_Thomas_Blanc
f10413184_Je_m_offre_toi --> Je_m_offre_toi
[/*]
Merci de votre retour
Dernière modification par Avotrafa (Le 11/01/2020, à 10:15)
J'aime apprendre et partager ce que je sais
Avant de poster, chercher par toi même et au forum ton problème
Desktop: Ubuntu Focal 20.04 (Bionic LTS) et Xubuntu 18.04.2 (Bionic LTS) sur portable PC
Hors ligne
#2 Le 11/01/2020, à 09:28
- Avotrafa
Re : [Résolu] Renommer tous les fichiers "*.pdf"
Merci pseudofab pour ta réponse, mais ça ne résolve pas mon problème!!!
Car tous les fichiers que je veux renommer se commencent en f104....._...., je veux supprimer tous les préfixes!!!
J'aime apprendre et partager ce que je sais
Avant de poster, chercher par toi même et au forum ton problème
Desktop: Ubuntu Focal 20.04 (Bionic LTS) et Xubuntu 18.04.2 (Bionic LTS) sur portable PC
Hors ligne
#3 Le 11/01/2020, à 09:33
- Compte supprimé
Re : [Résolu] Renommer tous les fichiers "*.pdf"
Oui je me suis apperçu que cela ne rédondait pas vraiment à ta question, aussi je venais juste d'effacer mon message qui était
echo "f10413184_Je_m_offre_toi"|cut -d "_" -f 2-
Je_m_offre_toi
.
Dernière modification par Compte supprimé (Le 11/01/2020, à 10:06)
#4 Le 11/01/2020, à 09:46
- alex2423
Re : [Résolu] Renommer tous les fichiers "*.pdf"
J'ai du mal à comprendre Avotrafa. Tu veux supprimer à chaque fois le préfixe f10412992_.
On s'appercoit que la fin du préfixe est marqué par le under score
pseudofab découpe découpe ta chaine de caractère avec un cut à chaque under score et sa commande ne renvoie que la 2ème itération et la suivante.
Qu'est ce qui n'est pas bon?
Hors ligne
#5 Le 11/01/2020, à 10:02
- Compte supprimé
Re : [Résolu] Renommer tous les fichiers "*.pdf"
Réponse complète:
for i in $(ls);do
mv $i $(echo $i|cut -d "_" -f 2-)
done
#6 Le 11/01/2020, à 10:09
- Avotrafa
Re : [Résolu] Renommer tous les fichiers "*.pdf"
Un capture d'écran sera plus claire:
http://pix.toile-libre.org/upload/origi … 736455.png
Je veux supprimer tous les préfixes, ce n'est pas un seul fichier mais tous
Merci
Sur Toile Libre ou TDCT'Pix, choisir le lien « Insérer la miniature dans un forum : »
Dernière modification par cqfd93 (Le 11/01/2020, à 17:11)
J'aime apprendre et partager ce que je sais
Avant de poster, chercher par toi même et au forum ton problème
Desktop: Ubuntu Focal 20.04 (Bionic LTS) et Xubuntu 18.04.2 (Bionic LTS) sur portable PC
Hors ligne
#7 Le 11/01/2020, à 10:11
- Compte supprimé
Re : [Résolu] Renommer tous les fichiers "*.pdf"
Répondu en #5
#8 Le 11/01/2020, à 10:14
- Avotrafa
Re : [Résolu] Renommer tous les fichiers "*.pdf"
Merci beaucoup pseudofab :D:D
J'ai reussi, en qlq seconde seulement, encore merci
J'aime apprendre et partager ce que je sais
Avant de poster, chercher par toi même et au forum ton problème
Desktop: Ubuntu Focal 20.04 (Bionic LTS) et Xubuntu 18.04.2 (Bionic LTS) sur portable PC
Hors ligne
#9 Le 11/01/2020, à 10:55
- alex2423
Re : [Résolu] Renommer tous les fichiers "*.pdf"
ahh, oui, j'avais oublié que c'était le "tous les fichiers" qui manquait.
je n'avais pas tilté
Hors ligne
#10 Le 11/01/2020, à 11:39
- pingouinux
Re : [Résolu] Renommer tous les fichiers "*.pdf"
Bonjour,
Les commandes en #5 ne marcheront pas si les noms des fichiers contiennent des espaces.
Plus simple (cette commande ne fait rien, et est juste informative)
rename -n 's/f\d+_//' *
et enlever -n si c'est correct :
rename 's/f\d+_//' *
Hors ligne
#11 Le 11/01/2020, à 13:03
- kamaris
Re : [Résolu] Renommer tous les fichiers "*.pdf"
@pseudofab : on ne peut pas faire confiance à la sortie de ls, on n'en maitrise pas le format.
Quelques exemples de problèmes qui peuvent se poser : https://unix.stackexchange.com/a/128987
Il faut utiliser les capacités de développement du shell, sans recourir à aucune commande :
for f in *; do
mv "$f" "${f#*_}"
done
Hors ligne
#12 Le 11/01/2020, à 14:08
- Compte supprimé
Re : [Résolu] Renommer tous les fichiers "*.pdf"
Merci kamaris,
Je découvre comment faire des subtitutions de paramettre avec #, ##, %, %% ...
Je n'ai pas vraiment compris le contenu de ton lien (j'utilise un traducteur), mais bon, je comprends que le formatage de la sortie d'un ls peut poser souci. Aussi je prends note que ta manière de faire, est la bonne façon de procéder ...
#13 Le 11/01/2020, à 18:12
- kamaris
Re : [Résolu] Renommer tous les fichiers "*.pdf"
J'ai du mal à trouver des liens en français qui regroupent divers tests démonstratifs, alors qu'en anglais il y en a pas mal (en voici un autre par exemple, dans un autre format que les stackexchange : https://mywiki.wooledge.org/ParsingLs).
Il y a quand même cette news linuxfr, où on trouve une petite discussion argumentée sur le sujet qui peut être éclairante : https://linuxfr.org/news/revue-des-tech … n-en-shell
Donc en gros, comme il est dit dans ce lien, c'est : « En bref la règle d'or est que la commande ls sert uniquement pour l'utilisation interactive du shell, dans le cas d'un script shell, on utilise soit le globbing soit la commande find en conjonction avec xargs. »
Mais en l'occurrence, la meilleure solution est probablement celle proposée par pingouinux en #10
Hors ligne
#14 Le 12/01/2020, à 21:16
- Compte supprimé
Re : [Résolu] Renommer tous les fichiers "*.pdf"
Merci pour tes liens, j'ai fait quelques essais et je comprends mieux ...
J'ai installé la commande rename, une occasion pour moi de voir/revoir un peu les expressions régulières