Bonjour,
J'ai un répertoire avec pas mal de fichiers qui viennent d'un serveur
windows et les noms et extensions sont un peu n'importe comment . Je
voudrais mettre les noms de ces fichiers en minuscules .
Comment faire ?
J'ai un répertoire avec pas mal de fichiers qui viennent d'un serveur windows et les noms et extensions sont un peu n'importe comment . Je voudrais mettre les noms de ces fichiers en minuscules . Comment faire ?
Si tu as zsh 4:
autoload -U zmv # si pas deja dans le ~/.zshrc cd /root/dir
J'ai un répertoire avec pas mal de fichiers qui viennent d'un serveur
windows et les noms et extensions sont un peu n'importe comment . Je
voudrais mettre les noms de ces fichiers en minuscules .
Comment faire ?
Si tu as zsh 4:
autoload -U zmv # si pas deja dans le ~/.zshrc
cd /root/dir
J'ai un répertoire avec pas mal de fichiers qui viennent d'un serveur windows et les noms et extensions sont un peu n'importe comment . Je voudrais mettre les noms de ces fichiers en minuscules . Comment faire ?
Si tu as zsh 4:
autoload -U zmv # si pas deja dans le ~/.zshrc cd /root/dir
find . -type f -exec sh -c 'echo mv '{}' `echo '{}' | tr A-Z a-z`' ;
et quand tu es sur, tu retires le premier "echo" :-)
Stephane Chazelas
2004-06-29, 19:02(+02), cedric:
find . -type f -exec sh -c 'echo mv '{}' `echo '{}' | tr A-Z a-z`' ;
et quand tu es sur, tu retires le premier "echo" :-)
Sage conseil, car ca peut deconner grave.
En premier lieu, ton quoting est bizzare, parce que c'est exactement equivalent a:
find . -type f -exec sh -c 'echo mv {} `echo {} | tr A-Z a-z`' ;
Ensuite le {} quand il ne constitue pas l'integralité d'un argument de find n'est pas compris par la plupart des find (en gros, il ne doit etre reconnu que par le GNU find).
Ensuite, s'il y a des caracteres speciaux au shell dans le nom des fichiers, ca peut faire des degats (par exemple un fichier qui s'appellerait "whatever; rm -rf $HOME").
Ensuite, ca ne marche pas si les noms des repertoires contiennent des majuscules.
-- Stephane
2004-06-29, 19:02(+02), cedric:
find . -type f -exec sh -c 'echo mv '{}' `echo '{}' | tr A-Z a-z`' ;
et quand tu es sur, tu retires le premier "echo" :-)
Sage conseil, car ca peut deconner grave.
En premier lieu, ton quoting est bizzare, parce que c'est
exactement equivalent a:
find . -type f -exec sh -c 'echo mv {} `echo {} | tr A-Z a-z`' ;
Ensuite le {} quand il ne constitue pas l'integralité d'un
argument de find n'est pas compris par la plupart des find (en
gros, il ne doit etre reconnu que par le GNU find).
Ensuite, s'il y a des caracteres speciaux au shell dans le nom
des fichiers, ca peut faire des degats (par exemple un fichier
qui s'appellerait "whatever; rm -rf $HOME").
Ensuite, ca ne marche pas si les noms des repertoires
contiennent des majuscules.
find . -type f -exec sh -c 'echo mv '{}' `echo '{}' | tr A-Z a-z`' ;
et quand tu es sur, tu retires le premier "echo" :-)
Sage conseil, car ca peut deconner grave.
En premier lieu, ton quoting est bizzare, parce que c'est exactement equivalent a:
find . -type f -exec sh -c 'echo mv {} `echo {} | tr A-Z a-z`' ;
Ensuite le {} quand il ne constitue pas l'integralité d'un argument de find n'est pas compris par la plupart des find (en gros, il ne doit etre reconnu que par le GNU find).
Ensuite, s'il y a des caracteres speciaux au shell dans le nom des fichiers, ca peut faire des degats (par exemple un fichier qui s'appellerait "whatever; rm -rf $HOME").
Ensuite, ca ne marche pas si les noms des repertoires contiennent des majuscules.
-- Stephane
cedric
Stephane Chazelas wrote:
En premier lieu, ton quoting est bizzare, parce que c'est exactement equivalent a:
find . -type f -exec sh -c 'echo mv {} `echo {} | tr A-Z a-z`' ;
Tiens, oui. J'ai toujours eu du mal avec le {} de find, alors je prend la précaution de maintenir mes petites habitudes...
Ensuite le {} quand il ne constitue pas l'integralité d'un argument de find n'est pas compris par la plupart des find (en gros, il ne doit etre reconnu que par le GNU find).
C'est effectivement celui que j'utilise. Sur la freeBSD d'à coté, le find à l'air de fonctionner aussi de cette facon.
Ensuite, s'il y a des caracteres speciaux au shell dans le nom des fichiers, ca peut faire des degats (par exemple un fichier qui s'appellerait "whatever; rm -rf $HOME").
Haha, oui je ne l'avais pas vu.
Ce serait vraiment pas de chance, quand même... C'est déjà arrivé à quelqu'un ce genre de chose ?
Ensuite, ca ne marche pas si les noms des repertoires contiennent des majuscules.
Oui ca j'avais repéré mais l'OP parlait d'un répertoire. Donc pas de noms de répertoire s'il exécute depuis ce répertoire.
Stephane Chazelas wrote:
En premier lieu, ton quoting est bizzare, parce que c'est
exactement equivalent a:
find . -type f -exec sh -c 'echo mv {} `echo {} | tr A-Z a-z`' ;
Tiens, oui. J'ai toujours eu du mal avec le {} de find, alors je prend
la précaution de maintenir mes petites habitudes...
Ensuite le {} quand il ne constitue pas l'integralité d'un
argument de find n'est pas compris par la plupart des find (en
gros, il ne doit etre reconnu que par le GNU find).
C'est effectivement celui que j'utilise.
Sur la freeBSD d'à coté, le find à l'air de fonctionner aussi de cette
facon.
Ensuite, s'il y a des caracteres speciaux au shell dans le nom
des fichiers, ca peut faire des degats (par exemple un fichier
qui s'appellerait "whatever; rm -rf $HOME").
Haha, oui je ne l'avais pas vu.
Ce serait vraiment pas de chance, quand même...
C'est déjà arrivé à quelqu'un ce genre de chose ?
Ensuite, ca ne marche pas si les noms des repertoires
contiennent des majuscules.
Oui ca j'avais repéré mais l'OP parlait d'un répertoire. Donc
pas de noms de répertoire s'il exécute depuis ce répertoire.
En premier lieu, ton quoting est bizzare, parce que c'est exactement equivalent a:
find . -type f -exec sh -c 'echo mv {} `echo {} | tr A-Z a-z`' ;
Tiens, oui. J'ai toujours eu du mal avec le {} de find, alors je prend la précaution de maintenir mes petites habitudes...
Ensuite le {} quand il ne constitue pas l'integralité d'un argument de find n'est pas compris par la plupart des find (en gros, il ne doit etre reconnu que par le GNU find).
C'est effectivement celui que j'utilise. Sur la freeBSD d'à coté, le find à l'air de fonctionner aussi de cette facon.
Ensuite, s'il y a des caracteres speciaux au shell dans le nom des fichiers, ca peut faire des degats (par exemple un fichier qui s'appellerait "whatever; rm -rf $HOME").
Haha, oui je ne l'avais pas vu.
Ce serait vraiment pas de chance, quand même... C'est déjà arrivé à quelqu'un ce genre de chose ?
Ensuite, ca ne marche pas si les noms des repertoires contiennent des majuscules.
Oui ca j'avais repéré mais l'OP parlait d'un répertoire. Donc pas de noms de répertoire s'il exécute depuis ce répertoire.
DominiX
ici même:cbs0nr$cu9$, Salut a écrit
Bonjour, J'ai un répertoire avec pas mal de fichiers qui viennent d'un serveur windows et les noms et extensions sont un peu n'importe comment . Je voudrais mettre les noms de ces fichiers en minuscules . Comment faire ?
perl -e 'rename $_, lc or die $! for <*>'
-- dominix
ici même:cbs0nr$cu9$1@s1.read.news.oleane.net,
Salut <Salut@hotmail.com> a écrit
Bonjour,
J'ai un répertoire avec pas mal de fichiers qui viennent d'un serveur
windows et les noms et extensions sont un peu n'importe comment . Je
voudrais mettre les noms de ces fichiers en minuscules .
Comment faire ?
Bonjour, J'ai un répertoire avec pas mal de fichiers qui viennent d'un serveur windows et les noms et extensions sont un peu n'importe comment . Je voudrais mettre les noms de ces fichiers en minuscules . Comment faire ?
perl -e 'rename $_, lc or die $! for <*>'
-- dominix
Nicolas Le Scouarnec
Ce serait vraiment pas de chance, quand même... C'est déjà arrivé à quelqu'un ce genre de chose ?
Oui, enfin, pas exactement, des noms de fichiers avec des points d'exclamations tout betement, dans une boucle, ca a écrasé des fichiers avec d'autres, déplacé des fichiers dans des repertoires "aléatoires", créé pleins de fichiers vides partout... C'est dingue ce qu'un oubli de guillemet peut provoquer, surtout quand on a une boucle ou un action "repetitive".
-- Nicolas Le Scouarnec
Ce serait vraiment pas de chance, quand même...
C'est déjà arrivé à quelqu'un ce genre de chose ?
Oui, enfin, pas exactement, des noms de fichiers avec des points
d'exclamations tout betement, dans une boucle, ca a écrasé des fichiers
avec d'autres, déplacé des fichiers dans des repertoires "aléatoires",
créé pleins de fichiers vides partout... C'est dingue ce qu'un oubli de
guillemet peut provoquer, surtout quand on a une boucle ou un action
"repetitive".
Ce serait vraiment pas de chance, quand même... C'est déjà arrivé à quelqu'un ce genre de chose ?
Oui, enfin, pas exactement, des noms de fichiers avec des points d'exclamations tout betement, dans une boucle, ca a écrasé des fichiers avec d'autres, déplacé des fichiers dans des repertoires "aléatoires", créé pleins de fichiers vides partout... C'est dingue ce qu'un oubli de guillemet peut provoquer, surtout quand on a une boucle ou un action "repetitive".
-- Nicolas Le Scouarnec
Stephane Chazelas
2004-06-29, 21:44(+02), cedric:
Stephane Chazelas wrote:
En premier lieu, ton quoting est bizzare, parce que c'est exactement equivalent a:
find . -type f -exec sh -c 'echo mv {} `echo {} | tr A-Z a-z`' ;
Tiens, oui. J'ai toujours eu du mal avec le {} de find, alors je prend la précaution de maintenir mes petites habitudes...
Mais, la, ce n'est pas le {} de find qui est en cause c'est le quoting un peu bizarre:
'foo'{}'bar'
Pourquoi sortir des single quotes pour quoter les { et } par des backslashes et rerentrer dans les single quotes derriere ?
Ensuite le {} quand il ne constitue pas l'integralité d'un argument de find n'est pas compris par la plupart des find (en gros, il ne doit etre reconnu que par le GNU find).
C'est effectivement celui que j'utilise. Sur la freeBSD d'à coté, le find à l'air de fonctionner aussi de cette facon.
Oui, c'est le comportement BSD et le find de GNU est basé en partie sur celui de BSD.
Ensuite, s'il y a des caracteres speciaux au shell dans le nom des fichiers, ca peut faire des degats (par exemple un fichier qui s'appellerait "whatever; rm -rf $HOME").
Haha, oui je ne l'avais pas vu.
Ce serait vraiment pas de chance, quand même... C'est déjà arrivé à quelqu'un ce genre de chose ? [...]
Il suffit qu'il y ait des espaces (et c'est courant dans les noms de fichiers Windows) pour que ca deconne.
-- Stephane
2004-06-29, 21:44(+02), cedric:
Stephane Chazelas wrote:
En premier lieu, ton quoting est bizzare, parce que c'est
exactement equivalent a:
find . -type f -exec sh -c 'echo mv {} `echo {} | tr A-Z a-z`' ;
Tiens, oui. J'ai toujours eu du mal avec le {} de find, alors je prend
la précaution de maintenir mes petites habitudes...
Mais, la, ce n'est pas le {} de find qui est en cause c'est le
quoting un peu bizarre:
'foo'{}'bar'
Pourquoi sortir des single quotes pour quoter les { et } par des
backslashes et rerentrer dans les single quotes derriere ?
Ensuite le {} quand il ne constitue pas l'integralité d'un
argument de find n'est pas compris par la plupart des find (en
gros, il ne doit etre reconnu que par le GNU find).
C'est effectivement celui que j'utilise.
Sur la freeBSD d'à coté, le find à l'air de fonctionner aussi de cette
facon.
Oui, c'est le comportement BSD et le find de GNU est basé en
partie sur celui de BSD.
Ensuite, s'il y a des caracteres speciaux au shell dans le nom
des fichiers, ca peut faire des degats (par exemple un fichier
qui s'appellerait "whatever; rm -rf $HOME").
Haha, oui je ne l'avais pas vu.
Ce serait vraiment pas de chance, quand même...
C'est déjà arrivé à quelqu'un ce genre de chose ?
[...]
Il suffit qu'il y ait des espaces (et c'est courant dans les
noms de fichiers Windows) pour que ca deconne.
En premier lieu, ton quoting est bizzare, parce que c'est exactement equivalent a:
find . -type f -exec sh -c 'echo mv {} `echo {} | tr A-Z a-z`' ;
Tiens, oui. J'ai toujours eu du mal avec le {} de find, alors je prend la précaution de maintenir mes petites habitudes...
Mais, la, ce n'est pas le {} de find qui est en cause c'est le quoting un peu bizarre:
'foo'{}'bar'
Pourquoi sortir des single quotes pour quoter les { et } par des backslashes et rerentrer dans les single quotes derriere ?
Ensuite le {} quand il ne constitue pas l'integralité d'un argument de find n'est pas compris par la plupart des find (en gros, il ne doit etre reconnu que par le GNU find).
C'est effectivement celui que j'utilise. Sur la freeBSD d'à coté, le find à l'air de fonctionner aussi de cette facon.
Oui, c'est le comportement BSD et le find de GNU est basé en partie sur celui de BSD.
Ensuite, s'il y a des caracteres speciaux au shell dans le nom des fichiers, ca peut faire des degats (par exemple un fichier qui s'appellerait "whatever; rm -rf $HOME").
Haha, oui je ne l'avais pas vu.
Ce serait vraiment pas de chance, quand même... C'est déjà arrivé à quelqu'un ce genre de chose ? [...]
Il suffit qu'il y ait des espaces (et c'est courant dans les noms de fichiers Windows) pour que ca deconne.
-- Stephane
cedric
Stephane Chazelas wrote:
Pourquoi sortir des single quotes pour quoter les { et } par des backslashes et rerentrer dans les single quotes derriere ?
Oui oui, c'est débile, je ne le nie pas. Si ca marche, c'est que 'foo{}bar' fonctionne aussi. Aie, pas sur la tête.
Stephane Chazelas wrote:
Pourquoi sortir des single quotes pour quoter les { et } par des
backslashes et rerentrer dans les single quotes derriere ?
Oui oui, c'est débile, je ne le nie pas. Si ca marche, c'est que
'foo{}bar' fonctionne aussi.
Aie, pas sur la tête.