Bonjour, j'essaye en général de me débrouiller tout seul, lire la doc, etc...
mais là j'y arrive pas
Il y a un truc dont j'ai hypersouvent besoin, depuis que j'ai découvert les bases du shell (le for, awk, etc...) c'est de récupérer des noms avec des caractères spé et de rajouter des carac d'annulations
exemple type : des fichiers, des répertoires avec espaces,a ccents, etc...
Donc en gros personne n'a un script qui le fait ou des explications (parce que je voudrai comprendre qd même) ?
merci !
# Re: Sed ! Je craque
Posté par Ju. . Évalué à 1.
Je comprends pas trop ce que tu veux faire...
;-/
# Re: Sed ! Je craque
Posté par CopainJack (site web personnel, Mastodon) . Évalué à 2.
# Re: Sed ! Je craque
Posté par Obsidian . Évalué à 2.
ls *[àâéêèïÎç]*
Ensuite pour sed, le plus simple c'est le substitute:
sed -e "s/Salut/Hello/g"
Tu peux aussi utiliser la commande "y", spécifique au sed de GNU, je crois, et qui fait une transofrmation respective:
sed -e "y/abcde/fghij/"
transformera tous les "a" en "e", les "b" en "f", etc.
# Re: Sed ! Je craque
Posté par deftones_chris . Évalué à 0.
J'espère que cela t'aidera :)
#!/bin/sh
# Lorsqu'on télécharge des fichiers HOST, on se retrouve avec des fichiers
# dont le nom est en majuscule. Ce script permet de renommer les fichiers
# passés à la ligne de commande pour qu'ils soient en minuscules.
#
# ex d'utilisation
# ----------------
# find . -name "*.[C|H]" | xargs majToMin.sh
for fichier in $*
do
nouvNom=$(echo $fichier | sed -e "s/A/a/g;\
s/B/b/g; \
s/C/c/g; \
s/D/d/g; \
s/E/e/g; \
s/F/f/g; \
s/G/g/g; \
s/H/h/g; \
s/I/i/g; \
s/J/j/g; \
s/K/k/g; \
s/L/l/g; \
s/M/m/g; \
s/O/o/g; \
s/P/p/g; \
s/Q/q/g; \
s/R/r/g; \
s/S/s/g; \
s/T/t/g; \
s/U/u/g; \
s/V/v/g; \
s/W/w/g; \
s/X/x/g; \
s/Y/y/g; \
s/Z/z/g; ")
mv $fichier $nouvNom
done
[^] # Re: Sed ! Je craque
Posté par fasthm . Évalué à 5.
tr A-Z a-z ?
La gent féminine, pas la "gente", pas de "e" ! La gent féminine ! Et ça se prononce comme "gens". Pas "jante".
[^] # Re: Sed ! Je craque
Posté par deftones_chris . Évalué à 1.
#!/bin/sh
# Lorsqu'on télécharge des fichiers HOST, on se retrouve avec des fichiers
# dont le nom est en majuscule. Ce script permet de renommer les fichiers
# passés à la ligne de commande pour qu'ils soient en minuscules.
#
# ex d'utilisation
# ----------------
# find . -name "*.[C|H]" | xargs majToMin.sh
for fichier in $*
do
nouvNom=$(echo $fichier | tr A-Z a-z)
mv $fichier $nouvNom
done
[^] # Re: Sed ! Je craque
Posté par seginus . Évalué à 1.
[^] # Re: Sed ! Je craque
Posté par Roche Thibault . Évalué à 1.
$* représente la totalité des arguments passés au script. Donc, si tu lances
./machin.sh fichier1 fichier2 fichier3
fichier prendra la valeur fichier1, puis fichier2 etc...
[^] # Re: Sed ! Je craque
Posté par seginus . Évalué à 1.
Je viens de voir dans la page man de bash (je sais, j'aurais pu le faire avant de poser la question) et c'est vrai que je me sert peut-être souvent de $@ au lieu de $*.
[^] # Re: Sed ! Je craque
Posté par jmfayard . Évalué à 1.
$ ./a My\ Documents My\ Music
mv: ne peut évaluer `My': No such file or directory
mv: ne peut évaluer `Documents': No such file or directory
mv: ne peut évaluer `My': No such file or directory
mv: ne peut évaluer `Music': No such file or directory
[^] # Re: Sed ! Je craque
Posté par deftones_chris . Évalué à 1.
N'ayant pas l'habitude d'utiliser les espaces dans les noms de fichiers (chose que je trouve stupide de faire), je n'ai pas prévu ce cas (même si on peut toujours faire un ./a "Mon fichier a moi").
En route pour la modif :)
[^] # Re: Sed ! Je craque
Posté par Sébastien BLAISOT . Évalué à 1.
j'ai aussi utilisé les classes upper et lower de tr, pour une plus grande compatibilité, notamment avec les lettres majuscules accentuées.
si j'ai rien loupé, ca marche.
-8<----------------8<-----------------8<-------------
#!/bin/sh
# Lorsqu'on télécharge des fichiers HOST, on se retrouve avec des fichiers
# dont le nom est en majuscule. Ce script permet de renommer les fichiers
# passés à la ligne de commande pour qu'ils soient en minuscules.
#
# ex d'utilisation
# ----------------
# find . -name "*.[C|H]" | xargs majToMin.sh
for fichier in "$@"; do
nouvNom=$(echo "$fichier" | tr [:upper:] [:lower:])
mv "$fichier" "$nouvNom"
done
-8<----------------8<-----------------8<-------------
[^] # Re: Sed ! Je craque
Posté par Sébastien BLAISOT . Évalué à 1.
tr [:upper:] [:lower:]
[^] # Re: Sed ! Je craque
Posté par animal_omega . Évalué à 2.
# Re: Sed ! Je craque
Posté par pinceau . Évalué à 4.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.