#1 Le 03/03/2021, à 18:24
- Bruhat Melvin
Besoin d'aide sur un exercice
Bonjour, j'ai besoin d'aide sur un exercice (ou apparement il faudrait utiliser les boucles)
4. Ecrire un script en bash qui permet de remplacer, dans un dossier, tous les fichiers ayant l’extension .JPG par l’extension .jpg.
Je ne comprends pas comment faire
Merci.
Hors ligne
#2 Le 03/03/2021, à 18:30
- Zakhar
Re : Besoin d'aide sur un exercice
Si on te donne la (une) solution, tu ne vas rien apprendre.
Cherche un peu, au besoin poste un truc que tu as essayé et qui ne fonctionne pas, et on te diras où ça va pas.
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#3 Le 03/03/2021, à 18:32
- Watael
Re : Besoin d'aide sur un exercice
lis ton cours
cherche sur internet
lis le manuel du shell
la recherche d'information fait partie de la formation.
cf. man bash /Développement des chemins
Dernière modification par Watael (Le 03/03/2021, à 18:32)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#4 Le 03/03/2021, à 18:34
- Zakhar
Re : Besoin d'aide sur un exercice
Watael a une façon super polie de dire RTFM, c'est absolument admirable.
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#5 Le 03/03/2021, à 18:42
- Watael
Re : Besoin d'aide sur un exercice
chut. je pensais que ça ne se verrait pas.
zut, je vais encore me faire enguirlander...
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 03/03/2021, à 18:42
- Nuliel
Re : Besoin d'aide sur un exercice
Sinon le classique "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson."
Hors ligne
#7 Le 03/03/2021, à 19:24
- cqfd93
Re : Besoin d'aide sur un exercice
Ah oui, les vertus de la relecture du cours…
− cqfd93 −
Hors ligne
#8 Le 03/03/2021, à 22:34
- diesel
Re : Besoin d'aide sur un exercice
Alleï, une petite indication.
Je ne vois pas pourquoi il faudrait faire une (des) boucle(s) pour répondre à cette question.
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
En ligne
#9 Le 03/03/2021, à 22:48
- MicP
Re : Besoin d'aide sur un exercice
…lui donner un poisson. …
Oui, mais il y a une autre méthode qui marche encore mieux :
Si tu lui donnes un un Tilapia, t'es sûr qu'il viendra plus jamais t’emmm…bêter.
Dernière modification par MicP (Le 03/03/2021, à 22:49)
Hors ligne
#10 Le 03/03/2021, à 23:38
- Watael
Re : Besoin d'aide sur un exercice
Je ne vois pas pourquoi il faudrait faire une (des) boucle(s) pour répondre à cette question.
parce que c'est le thème de la leçon ?! pour vérifier les acquis ?!
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#11 Le 04/03/2021, à 07:57
- diesel
Re : Besoin d'aide sur un exercice
diesel a écrit :Je ne vois pas pourquoi il faudrait faire une (des) boucle(s) pour répondre à cette question.
parce que c'est le thème de la leçon ?! pour vérifier les acquis ?!
Peut-être...
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
En ligne
#12 Le 04/03/2021, à 10:16
- ar barzh paour
Re : Besoin d'aide sur un exercice
CYRAV
@ Bruhat Melvin
comme c'est ton premier message ne te décourage pas
peut-être te donnera-t-on d'autres liens ?
https://abs.traduc.org/abs-fr/
http://www.gnu.org/software/bash/manual/bash.html
et dans un terminal
man la_commande_qui_va_bien
Dernière modification par ar barzh paour (Le 04/03/2021, à 10:28)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#13 Le 04/03/2021, à 10:34
- Nuliel
Re : Besoin d'aide sur un exercice
@Bruhat Melvin: l'utilisation de boucles n'est pas obligatoire, mais tu peux le faire avec une boucle, c'est tout à fait possible. Il n'y a pas qu'une solution.
N'hésite pas à poster ce que tu as fait même si cela ne fonctionne pas, on pourra ainsi t'aiguiller.
Hors ligne
#14 Le 04/03/2021, à 10:38
- Bruhat Melvin
Re : Besoin d'aide sur un exercice
je ne vois pas comment on pourrait faire car je viens de débuter le bash.
J'aurai trouver tout les fichiers de mon repertoire avec find qui commence par .jpg.
Puis pour les remplacer je ne sais pas comment on fait
Je ne comprends pas du tout pourquoi il faudrait utiliser une boucle(ou plusieurs),On pourrait juste demander de chercher tout les fichier et les remplacer..
Hors ligne
#15 Le 04/03/2021, à 10:42
- Nuliel
Re : Besoin d'aide sur un exercice
L'utilisation de find est effectivement une possibilité, quelle serait la commande te permettant de chercher tous les fichiers .JPG dans ce dossier sans s'occuper de changer l'extension?
Sinon dans le cas où le dossier contient les différents fichiers .JPG et pas de sous dossiers contenant des fichiers JPG, il est possible de le faire avec une boucle.
Dernière modification par Nuliel (Le 04/03/2021, à 10:44)
Hors ligne
#16 Le 04/03/2021, à 11:46
- MicP
Re : Besoin d'aide sur un exercice
Bonjour
Tout ça peut effectivement se faire dans une boucle, mais pour arriver à trouver comment faire
il faut que tu divises le problème en plusieurs étapes.
1°/ trouve une ligne de commande qui changera le nom d'un fichier
1-a Puisque ce nom de fichier sera donné comme variable trouvée par la boucle,
arrange toi pour que cette commande puisse s'appliquer sur un nom de fichier qui est dans une variable
2°/ Trouve comment ne changer que le nom d'extension d'un nom de fichier qui est dans une variable
Pour tes tests, n'applique pas la commande qui va changer le nom,
mais fais simplement s'afficher la valeur de la ou des variables
et tu pourras plus tard utiliser la méthode trouvée dans la commande qui sera lancée par l'exécution de la boucle.
3°/ Teste sur un fichier la commande trouvée en 1-a en utilisant ce que tu as trouvé en 2°
=======
4°/ trouve comment faire une boucle qui permettra de transmettre un à un chacun des noms de fichier à la commande trouvée en 1-a
4-a Pour mettre au point ta boucle, fais d'abord simplement s'afficher avec la commande echo
le nom de fichier qui sera transmis dans une variable par l'exécution de la boucle
5°/ Une fois que la boucle fonctionne, teste la avec les commandes trouvées en 3°/
mais fais d'abord seulement s'afficher avec la commande echo les lignes de commande qui seront exécutées dans la boucle
6°/ si la boucle affiche les lignes de commandes comme tu l'espérais,
tu n'auras plus qu'à les faire s'appliquer plutôt que de s'afficher
Dernière modification par MicP (Le 04/03/2021, à 11:53)
Hors ligne
#17 Le 04/03/2021, à 11:52
- Bruhat Melvin
Re : Besoin d'aide sur un exercice
Pour la commande ca serait find -name *.jpg non?
Hors ligne
#18 Le 04/03/2021, à 11:57
- MicP
Re : Besoin d'aide sur un exercice
… ca serait find -name *.jpg non?
Comme cette commande ne modifiera aucun fichier, teste la pour voir si ça fait ce que tu voulais,
en n'oubliant pas que tu avais écrit, dans ton premier message :
…dans un dossier…
Pour la tester, teste la dans un répertoire
qui contient des fichiers dont le nom d'extension est .jpg
mais qui contient aussi des sous-répertoires qui contiennent des fichiers dont le nom d'extension est .jpg
Dernière modification par MicP (Le 04/03/2021, à 12:01)
Hors ligne
#19 Le 04/03/2021, à 13:29
- Watael
Re : Besoin d'aide sur un exercice
on devrait pouvoir lire l'énoncer complet pour savoir s'il peut se dispenser d'une boucle.
d'autant, que la manipulation des noms des fichiers sera plus aisée (paraîtra plus "naturelle") au sein d'une boucle.
pour les remplacer je ne sais pas comment on fait
as-tu fait quelques recherches ?
faire part de son manque de connaissance, sans faire état des recherches effectuées, donne une très mauvaise image.
il faut aller plus loin, dans tes explications aussi.
MicP a raison, il faut décomposer un problème complexe en éléments simples : "diviser pour régner".
Dernière modification par Watael (Le 04/03/2021, à 13:30)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#20 Le 04/03/2021, à 14:04
- Nuliel
Re : Besoin d'aide sur un exercice
Petite précision, ce n'est pas find -name *.jpg mais
find monDossier/ -name "*.jpg"
Quelques explications:
la structure classique de find c'est:
find où quoi
Ici "où" c'est dans le dossier monDossier/, et "quoi" c'est un fichier dont le nom contient 0 ou plusieurs caractères (c'est l'étoile), puis suivi de .jpg et rien après.
En mettant des guillemets, tu protèges l'étoile de l'interprétation par bash, sinon il aurait remplacé par les noms de fichiers dans le dossier où tu te trouves actuellement.
Un exemple sera plus parlant:
nuliel@nuliel-desktop:~/test$ ls -R
.:
test1 test2
./test1:
res1
./test2:
res2
nuliel@nuliel-desktop:~/test$ find test2 -name res*
test2/res2
nuliel@nuliel-desktop:~/test$ find test2 -name "res*"
test2/res2
Là les guillemets ne changent rien.
nuliel@nuliel-desktop:~/test$ cd test1
nuliel@nuliel-desktop:~/test/test1$ find ../test2 -name "res*"
../test2/res2
nuliel@nuliel-desktop:~/test/test1$ find ../test2 -name res*
nuliel@nuliel-desktop:~/test/test1$
Là dans la dernière commande, bash a interprété l'étoile, et a remplacé res* par res1 (le seul fichier de test1), et cherche donc res1 dans test2, et il n'existe pas de fichier.
D'où l'importance des guillemets.
Maintenant tu peux passer à la partie changement de nom, tu peux commencer par chercher la commande qui sert sous linux à changer le nom d'un fichier, puis voir comment utiliser le paramètre -exec de la commande find.
Dernière modification par Nuliel (Le 04/03/2021, à 14:06)
Hors ligne
#21 Le 04/03/2021, à 14:29
- MicP
Re : Besoin d'aide sur un exercice
Pour te créer un environnement pour faire tes tests
tu pourrais entrer ces deux lignes de commandes :
mkdir -p ~/aeffacer/testsJpg/sousRep/
touch ~/aeffacer/testsJpg/{,sousRep/}nomFichier{_,\ }{1..3}{,.{jpg,txt}}
Tu pourras voir ce que ça donne
en entrant la ligne de commande suivante :
ls -lR ~/aeffacer/
Ensuite, pour faire tes tests,
tu pourras te mettre dans le répertoire ~/aeffacer
en entrant la ligne de commande suivante :
cd ~/aeffacer/
=======
Et quand tu en auras terminé avec tes tests,
tu pourras supprimer tout cet environnement de test,
en lançant la ligne de commande suivante :
rm -rf ~/aeffacer/
Dernière modification par MicP (Le 04/03/2021, à 14:44)
Hors ligne
#22 Le 04/03/2021, à 17:34
- Bruhat Melvin
Re : Besoin d'aide sur un exercice
Ok du coup je pense que j'aurai écrit
#!/bin/bash
find monDossier/ -name "*.jpg"
mais ensuite je ne connais pas la commande pour remplacer les fichiers
Hors ligne
#23 Le 04/03/2021, à 17:40
- Watael
Re : Besoin d'aide sur un exercice
Bruhat Melvin a écrit :pour les remplacer je ne sais pas comment on fait
as-tu fait quelques recherches ?
lesquelles ?
en quoi consiste ce "remplacement" ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#24 Le 04/03/2021, à 18:30
- pingouinux
Re : Besoin d'aide sur un exercice
Bonjour,
mais ensuite je ne connais pas la commande pour remplacer les fichiers
Pour changer le nom d'un fichier, regarde la commande mv.
Pour modifier une variable (contenant le nom d'un fichier, par exemple), regarde
Tu peux utiliser ${parameter%word} ou ${parameter/pattern/string}
Pour changer le nom des fichiers dans un dossier, sans faire de boucle, tu as la commande rename.
Hors ligne
#25 Le 04/03/2021, à 18:40
- geole
Re : Besoin d'aide sur un exercice
..
Pour changer le nom des fichiers dans un dossier, sans faire de boucle, tu as la commande rename.
Bonjour
Ce n'est pas du logiciel de base
a@b:~$ ls *.JPG
a.JPG v2.JPG
a@b:~$ mv a.JPG a.jpg
a@b:~$ ls *.JPG
v2.JPG
a@b:~$ rename v2.JPG V2.jpg
La commande « rename » n'a pas été trouvée, mais peut être installée avec :
sudo apt install rename
a@b:~$
Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit, utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248
Hors ligne