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.

#1 Le 03/03/2021, à 19: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, à 19: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, à 19: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, à 19:32)


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

Hors ligne

#4 Le 03/03/2021, à 19:34

Zakhar

Re : Besoin d'aide sur un exercice

Watael a une façon super polie de dire RTFM, c'est absolument admirable. lol


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#5 Le 03/03/2021, à 19: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... hmm
smile


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

Hors ligne

#6 Le 03/03/2021, à 19: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, à 20: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, à 23: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.

Hors ligne

#9 Le 03/03/2021, à 23:48

MicP

Re : Besoin d'aide sur un exercice

Nuliel a écrit :

…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, à 23:49)

Hors ligne

#10 Le 04/03/2021, à 00:38

Watael

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 ?!


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

Hors ligne

#11 Le 04/03/2021, à 08:57

diesel

Re : Besoin d'aide sur un exercice

Watael a écrit :
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.

Hors ligne

#12 Le 04/03/2021, à 11: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, à 11:28)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( 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, à 11: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, à 11: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, à 11: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, à 11:44)

Hors ligne

#16 Le 04/03/2021, à 12: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, à 12:53)

Hors ligne

#17 Le 04/03/2021, à 12: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, à 12:57

MicP

Re : Besoin d'aide sur un exercice

Bruhat Melvin a écrit :

… 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 son message #1, Bruhat Melvin a écrit :

…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, à 13:01)

Hors ligne

#19 Le 04/03/2021, à 14: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.

Bruhat Melvin a écrit :

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". smile

Dernière modification par Watael (Le 04/03/2021, à 14:30)


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

Hors ligne

#20 Le 04/03/2021, à 15: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, à 15:06)

Hors ligne

#21 Le 04/03/2021, à 15: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, à 15:44)

Hors ligne

#22 Le 04/03/2021, à 18: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, à 18:40

Watael

Re : Besoin d'aide sur un exercice

Watael a écrit :
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, à 19:30

pingouinux

Re : Besoin d'aide sur un exercice

Bonjour,

Bruhat Melvin #22 a écrit :

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

man bash -> Parameter Expansion a écrit :

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, à 19:40

geole

Re : Besoin d'aide sur un exercice

pingouinux a écrit :

..
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