Bash - Remplacer maj par min dans nom de fich
Résolu/Fermé
artagon7
Messages postés
417
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
12 novembre 2024
-
18 août 2007 à 21:56
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 19 août 2007 à 08:48
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 19 août 2007 à 08:48
A voir également:
- Bash - Remplacer maj par min dans nom de fich
- Min en maj - Guide
- Remplacer disque dur par ssd - Guide
- Remplacer dans word - Guide
- È maj - Guide
- Facebook recherche par nom et prénom ✓ - Forum Facebook
8 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
18 août 2007 à 22:41
18 août 2007 à 22:41
Salut,
Min => Maj
lami20j
Min => Maj
lami20j@deb:~/trash/artagon$ cat ../../ccm.sh #!/bin/bash rep="/home/lami20j/trash/artagon" for fich in $rep/*; do nouveau=$(echo ${fich##*/} | tr 'a-z' 'A-Z'); mv -T "$fich" "$rep/$nouveau"; done lami20j@deb:~/trash/artagon$ pwd /home/lami20j/trash/artagon lami20j@deb:~/trash/artagon$ ls -1 aaa bbb ccc lami20j@deb:~/trash/artagon$ sh ../../ccm.sh lami20j@deb:~/trash/artagon$ ls -1 AAA BBB CCCMaj => Min
lami20j@deb:~/trash/artagon$ cat ../../ccm1.sh #!/bin/bash rep="/home/lami20j/trash/artagon" for fich in $rep/*; do nouveau=$(echo ${fich##*/} | tr 'A-Z' 'a-z'); mv -T "$fich" "$rep/$nouveau"; done lami20j@deb:~/trash/artagon$ ls -1 AAA BBB CCC lami20j@deb:~/trash/artagon$ sh ../../ccm1.sh lami20j@deb:~/trash/artagon$ ls -1 aaa bbb ccc lami20j@deb:~/trash/artagon$--
lami20j
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
18 août 2007 à 23:14
18 août 2007 à 23:14
Salut,
Affiche le résultat de la commande :
Affiche le résultat de la commande :
shopt | grep nocaseglobsi l'option est à "on" c'est que ton bash ne fait pas la différence entre les majuscules et les minuscules lors du développement des noms de fichiers. Il faudra alors basculer cet été à "off" :
shopt -u nocaseglob;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
18 août 2007 à 23:20
18 août 2007 à 23:20
Salut,
je ne connaissais pas shopt ;-)
Merci.
je ne connaissais pas shopt ;-)
Merci.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
18 août 2007 à 23:23
18 août 2007 à 23:23
Tu fais pas assez de shopping c'est pour ça ;-DDDDD
De rien ;-))
De rien ;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
18 août 2007 à 23:27
18 août 2007 à 23:27
Tu fais pas assez de shopping c'est pour ça
En effet, moi je fais des ncourses :-DDD
En effet, moi je fais des ncourses :-DDD
artagon7
Messages postés
417
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
12 novembre 2024
7
18 août 2007 à 23:34
18 août 2007 à 23:34
J'ai fait ta commande jipicy et ca me donne
$ shopt | grep nocaseglob
nocaseglob off
Donc, selon ce que tu as ecrit mon bash devrait faire la difference entre les min et les maj ...
Merci
$ shopt | grep nocaseglob
nocaseglob off
Donc, selon ce que tu as ecrit mon bash devrait faire la difference entre les min et les maj ...
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
18 août 2007 à 23:52
18 août 2007 à 23:52
Affiche le résultat de :
shopttout court ;-))
artagon7
Messages postés
417
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
12 novembre 2024
7
19 août 2007 à 00:06
19 août 2007 à 00:06
Voici le resultat de $shopt :
cdable_vars off
cdspell off
checkhash off
checkwinsize on
cmdhist on
dotglob off
execfail off
expand_aliases on
extdebug off
extglob on
extquote on
failglob off
force_fignore on
gnu_errfmt off
histappend off
histreedit off
histverify off
hostcomplete off
huponexit off
interactive_comments on
lithist off
login_shell off
mailwarn off
no_empty_cmd_completion off
nocaseglob off
nocasematch off
nullglob off
progcomp on
promptvars on
restricted_shell off
shift_verbose off
sourcepath on
xpg_echo off
merci, :)
cdable_vars off
cdspell off
checkhash off
checkwinsize on
cmdhist on
dotglob off
execfail off
expand_aliases on
extdebug off
extglob on
extquote on
failglob off
force_fignore on
gnu_errfmt off
histappend off
histreedit off
histverify off
hostcomplete off
huponexit off
interactive_comments on
lithist off
login_shell off
mailwarn off
no_empty_cmd_completion off
nocaseglob off
nocasematch off
nullglob off
progcomp on
promptvars on
restricted_shell off
shift_verbose off
sourcepath on
xpg_echo off
merci, :)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
19 août 2007 à 00:40
19 août 2007 à 00:40
Bon ben là je sèche ;-\
Passe ton shell en mode débugage "set -xv" ("set -" pour repasser en mode normal), relance la commande "cd test" (ou cd Test) et enfin ton script et affiche-nous le résultat que l'on essaie de voir comment ton shell interprète les variables et les noms de fichiers...
Passe ton shell en mode débugage "set -xv" ("set -" pour repasser en mode normal), relance la commande "cd test" (ou cd Test) et enfin ton script et affiche-nous le résultat que l'on essaie de voir comment ton shell interprète les variables et les noms de fichiers...
artagon7
Messages postés
417
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
12 novembre 2024
7
19 août 2007 à 01:08
19 août 2007 à 01:08
Tel que demande jipicy
Jacques@Mach_1:/media/sda5/Informatique/Linux$ cd test
cd test
+ cd test
echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"
++ echo -ne '\033]0;Jacques@Mach_1: /media/sda5/Informatique/Linux/test\007'
Jacques@Mach_1:/media/sda5/Informatique/Linux/test$
$bash maj_a_min.sh
bash maj_a_min.sh
+ bash maj_a_min.sh
mv: `/media/sda5/Informatique/Linux/Test/Editeur_Sed.rtf' and `/media/sda5/Informatique/Linux/Test/editeur_sed.rtf' are the same file
mv: `/media/sda5/Informatique/Linux/Test/Guide_LInux.txt' and `/media/sda5/Informatique/Linux/Test/guide_linux.txt' are the same file
mv: `/media/sda5/Informatique/Linux/Test/Notes_sur_les_Scripts.rtf' and `/media/sda5/Informatique/Linux/Test/notes_sur_les_scripts.rtf' are the same file
echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"
++ echo -ne '\033]0;Jacques@Mach_1: /media/sda5/Programmes/Scripts\007'
Jacques@Mach_1:/media/sda5/Programmes/Scripts$
Merci, :-)
Jacques@Mach_1:/media/sda5/Informatique/Linux$ cd test
cd test
+ cd test
echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"
++ echo -ne '\033]0;Jacques@Mach_1: /media/sda5/Informatique/Linux/test\007'
Jacques@Mach_1:/media/sda5/Informatique/Linux/test$
$bash maj_a_min.sh
bash maj_a_min.sh
+ bash maj_a_min.sh
mv: `/media/sda5/Informatique/Linux/Test/Editeur_Sed.rtf' and `/media/sda5/Informatique/Linux/Test/editeur_sed.rtf' are the same file
mv: `/media/sda5/Informatique/Linux/Test/Guide_LInux.txt' and `/media/sda5/Informatique/Linux/Test/guide_linux.txt' are the same file
mv: `/media/sda5/Informatique/Linux/Test/Notes_sur_les_Scripts.rtf' and `/media/sda5/Informatique/Linux/Test/notes_sur_les_scripts.rtf' are the same file
echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"
++ echo -ne '\033]0;Jacques@Mach_1: /media/sda5/Programmes/Scripts\007'
Jacques@Mach_1:/media/sda5/Programmes/Scripts$
Merci, :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
19 août 2007 à 01:20
19 août 2007 à 01:20
Euh... pardon, mets ausii le "set -xv" au début de ton script (en dessous de la ligne "shebang" (#! /bin/bash)
Les fichiers en minuscule n'existent pas au départ ?
Affiche aussi avant le contenu du répertoire "/media/sda5/Informatique/Linux/test/"
Merci.
Les fichiers en minuscule n'existent pas au départ ?
Affiche aussi avant le contenu du répertoire "/media/sda5/Informatique/Linux/test/"
Merci.
artagon7
Messages postés
417
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
12 novembre 2024
7
19 août 2007 à 01:39
19 août 2007 à 01:39
Salut jipicy
Dans le repertoire /Test il n'y a que trois fichiers qui contiennent tous au moins une majuscule. Mais il se peut qu'il existe des fichiers qui ne contiennent que des minuscules la ou je vais appliquer dans le futur le script que j'essaie d'ecrire.
Mon script
set -xv
rep="/media/sda5/Informatique/Linux/Test"
cd $rep
ls -l
for fich in $rep/*; do
nouveau=$(echo ${fich##*/} | tr 'A-Z' 'a-z');
mv -T "$fich" "$rep/$nouveau";
done
Resultat
$ bash maj_a_min.sh
bash maj_a_min.sh
+ bash maj_a_min.sh
rep="/media/sda5/Informatique/Linux/Test"
+ rep=/media/sda5/Informatique/Linux/Test
cd $rep
+ cd /media/sda5/Informatique/Linux/Test
ls -l
+ ls -l
total 144
-rwxrwx--- 1 root plugdev 4608 2007-08-18 18:52 Editeur_Sed.rtf
-rwxrwx--- 1 root plugdev 102912 2007-08-18 18:52 Guide_LInux.txt
-rwxrwx--- 1 root plugdev 2 2007-08-18 18:52 Notes_sur_les_Scripts.rtf
for fich in $rep/*; do
nouveau=$(echo ${fich##*/} | tr 'A-Z' 'a-z');
mv -T "$fich" "$rep/$nouveau";
done
+ for fich in '$rep/*'
echo ${fich##*/} | tr 'A-Z' 'a-z'
++ echo Editeur_Sed.rtf
++ tr A-Z a-z
+ nouveau=editeur_sed.rtf
+ mv -T /media/sda5/Informatique/Linux/Test/Editeur_Sed.rtf /media/sda5/Informatique/Linux/Test/editeur_sed.rtf
mv: `/media/sda5/Informatique/Linux/Test/Editeur_Sed.rtf' and `/media/sda5/Informatique/Linux/Test/editeur_sed.rtf' are the same file
+ for fich in '$rep/*'
echo ${fich##*/} | tr 'A-Z' 'a-z'
++ echo Guide_LInux.txt
++ tr A-Z a-z
+ nouveau=guide_linux.txt
+ mv -T /media/sda5/Informatique/Linux/Test/Guide_LInux.txt /media/sda5/Informatique/Linux/Test/guide_linux.txt
mv: `/media/sda5/Informatique/Linux/Test/Guide_LInux.txt' and `/media/sda5/Informatique/Linux/Test/guide_linux.txt' are the same file
+ for fich in '$rep/*'
echo ${fich##*/} | tr 'A-Z' 'a-z'
++ echo Notes_sur_les_Scripts.rtf
++ tr A-Z a-z
+ nouveau=notes_sur_les_scripts.rtf
+ mv -T /media/sda5/Informatique/Linux/Test/Notes_sur_les_Scripts.rtf /media/sda5/Informatique/Linux/Test/notes_sur_les_scripts.rtf
mv: `/media/sda5/Informatique/Linux/Test/Notes_sur_les_Scripts.rtf' and `/media/sda5/Informatique/Linux/Test/notes_sur_les_scripts.rtf' are the same file
echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"
++ echo -ne '\033]0;Jacques@Mach_1: /media/sda5/Programmes/Scripts\007'
Jacques@Mach_1:/media/sda5/Programmes/Scripts$
Merci, :-)
Dans le repertoire /Test il n'y a que trois fichiers qui contiennent tous au moins une majuscule. Mais il se peut qu'il existe des fichiers qui ne contiennent que des minuscules la ou je vais appliquer dans le futur le script que j'essaie d'ecrire.
Mon script
set -xv
rep="/media/sda5/Informatique/Linux/Test"
cd $rep
ls -l
for fich in $rep/*; do
nouveau=$(echo ${fich##*/} | tr 'A-Z' 'a-z');
mv -T "$fich" "$rep/$nouveau";
done
Resultat
$ bash maj_a_min.sh
bash maj_a_min.sh
+ bash maj_a_min.sh
rep="/media/sda5/Informatique/Linux/Test"
+ rep=/media/sda5/Informatique/Linux/Test
cd $rep
+ cd /media/sda5/Informatique/Linux/Test
ls -l
+ ls -l
total 144
-rwxrwx--- 1 root plugdev 4608 2007-08-18 18:52 Editeur_Sed.rtf
-rwxrwx--- 1 root plugdev 102912 2007-08-18 18:52 Guide_LInux.txt
-rwxrwx--- 1 root plugdev 2 2007-08-18 18:52 Notes_sur_les_Scripts.rtf
for fich in $rep/*; do
nouveau=$(echo ${fich##*/} | tr 'A-Z' 'a-z');
mv -T "$fich" "$rep/$nouveau";
done
+ for fich in '$rep/*'
echo ${fich##*/} | tr 'A-Z' 'a-z'
++ echo Editeur_Sed.rtf
++ tr A-Z a-z
+ nouveau=editeur_sed.rtf
+ mv -T /media/sda5/Informatique/Linux/Test/Editeur_Sed.rtf /media/sda5/Informatique/Linux/Test/editeur_sed.rtf
mv: `/media/sda5/Informatique/Linux/Test/Editeur_Sed.rtf' and `/media/sda5/Informatique/Linux/Test/editeur_sed.rtf' are the same file
+ for fich in '$rep/*'
echo ${fich##*/} | tr 'A-Z' 'a-z'
++ echo Guide_LInux.txt
++ tr A-Z a-z
+ nouveau=guide_linux.txt
+ mv -T /media/sda5/Informatique/Linux/Test/Guide_LInux.txt /media/sda5/Informatique/Linux/Test/guide_linux.txt
mv: `/media/sda5/Informatique/Linux/Test/Guide_LInux.txt' and `/media/sda5/Informatique/Linux/Test/guide_linux.txt' are the same file
+ for fich in '$rep/*'
echo ${fich##*/} | tr 'A-Z' 'a-z'
++ echo Notes_sur_les_Scripts.rtf
++ tr A-Z a-z
+ nouveau=notes_sur_les_scripts.rtf
+ mv -T /media/sda5/Informatique/Linux/Test/Notes_sur_les_Scripts.rtf /media/sda5/Informatique/Linux/Test/notes_sur_les_scripts.rtf
mv: `/media/sda5/Informatique/Linux/Test/Notes_sur_les_Scripts.rtf' and `/media/sda5/Informatique/Linux/Test/notes_sur_les_scripts.rtf' are the same file
echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"
++ echo -ne '\033]0;Jacques@Mach_1: /media/sda5/Programmes/Scripts\007'
Jacques@Mach_1:/media/sda5/Programmes/Scripts$
Merci, :-)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
19 août 2007 à 02:03
19 août 2007 à 02:03
et si tu fait comme ça
lami20j@deb:~/trash/artagon$ cat ../../ccm.sh #!/bin/bash rep="/home/lami20j/trash/artagon" for fich in $rep/*; do mv "$fich" "$fich.new" nouveau=$(echo ${fich##*/} | tr 'A-Z' 'a-z'); mv "$fich.new" $rep/$nouveau done lami20j@deb:~/trash/artagon$ ls -1 Editeur_sed.rtf Guide_linux.txt Notes_sur_les_scripts.rtf lami20j@deb:~/trash/artagon$ sh ../../ccm.sh lami20j@deb:~/trash/artagon$ ls -1 editeur_sed.rtf guide_linux.txt notes_sur_les_scripts.rtf lami20j@deb:~/trash/artagon$
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
19 août 2007 à 02:06
19 août 2007 à 02:06
exécuter avec -vx
lami20j@deb:~/trash/artagon$ sh -vx ../../ccm.sh #!/bin/bash rep="/home/lami20j/trash/artagon" + rep=/home/lami20j/trash/artagon for fich in $rep/*; do mv "$fich" "$fich.new" nouveau=$(echo ${fich##*/} | tr 'A-Z' 'a-z'); mv "$fich.new" $rep/${nouveau%%.new} done + for fich in '$rep/*' + mv /home/lami20j/trash/artagon/Editeur_sed.rtf /home/lami20j/trash/artagon/Editeur_sed.rtf.new echo ${fich##*/} | tr 'A-Z' 'a-z' ++ echo Editeur_sed.rtf ++ tr A-Z a-z + nouveau=editeur_sed.rtf + mv /home/lami20j/trash/artagon/Editeur_sed.rtf.new /home/lami20j/trash/artagon/editeur_sed.rtf + for fich in '$rep/*' + mv /home/lami20j/trash/artagon/Guide_linux.txt /home/lami20j/trash/artagon/Guide_linux.txt.new echo ${fich##*/} | tr 'A-Z' 'a-z' ++ echo Guide_linux.txt ++ tr A-Z a-z + nouveau=guide_linux.txt + mv /home/lami20j/trash/artagon/Guide_linux.txt.new /home/lami20j/trash/artagon/guide_linux.txt + for fich in '$rep/*' + mv /home/lami20j/trash/artagon/Notes_sur_les_scripts.rtf /home/lami20j/trash/artagon/Notes_sur_les_scripts.rtf.new echo ${fich##*/} | tr 'A-Z' 'a-z' ++ echo Notes_sur_les_scripts.rtf ++ tr A-Z a-z + nouveau=notes_sur_les_scripts.rtf + mv /home/lami20j/trash/artagon/Notes_sur_les_scripts.rtf.new /home/lami20j/trash/artagon/notes_sur_les_scripts.rtf lami20j@deb:~/trash/artagon$
artagon7
Messages postés
417
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
12 novembre 2024
7
19 août 2007 à 02:22
19 août 2007 à 02:22
lami20j, tu viens de viser en plein dans le mille. BOUM!
J'avais cru au debut que ce probleme etait facilement resolvable. Certaines fois, il ne faut pas se fier aux apparences...
MERCI BEAUCOUP A VOUS DEUX (en majuscules svp :-)) jipicy et lami20j pour votre aide. Un autre probleme que vous resolvez.
J'avais cru au debut que ce probleme etait facilement resolvable. Certaines fois, il ne faut pas se fier aux apparences...
MERCI BEAUCOUP A VOUS DEUX (en majuscules svp :-)) jipicy et lami20j pour votre aide. Un autre probleme que vous resolvez.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
19 août 2007 à 02:26
19 août 2007 à 02:26
de rien,
à la prochaine :-))
à la prochaine :-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
19 août 2007 à 08:48
19 août 2007 à 08:48
Merchi auchi ;-))
Bon dimanche à touch.
PS. Comme quoi le "set -xv" devrait être obligatoire et indissociable du "shebang" !!!
Bon dimanche à touch.
PS. Comme quoi le "set -xv" devrait être obligatoire et indissociable du "shebang" !!!
18 août 2007 à 23:48
En passant, dis-moi que je ne suis pas le seul present dans ton repertoire /trash. Ca va me consoler un peu ;-))
Merci
18 août 2007 à 23:52
regarde ici bash remplacer maj par min dans nom de fich#2
dis-moi que je ne suis pas le seul present dans ton repertoire /trash.
tout le CCM est dans mon répertoire trash. Oulà je serai banni :-DDDD
19 août 2007 à 00:11
Et merci de n'etre pas le seul dans /trash. Ca m'aurait fait quelque chose ... :-(
Merci pour ton aide, :)