Bonjour,
Les espaces dans des noms de fichiers me posent quelques problèmes :
Je voudrais renommer automatiquement un grand nombre de fichiers. Ca marche
très bien tant que ces fichiers ne contiennent pas d'espaces. Voici une
illustration du problème :
$ ls IMG*
IMG 01.JPG IMG 02.JPG
$
Yann Cochard wrote:
Bonjour,
Les espaces dans des noms de fichiers me posent quelques problèmes :
Je voudrais renommer automatiquement un grand nombre de fichiers. Ca marche
très bien tant que ces fichiers ne contiennent pas d'espaces. Voici une
illustration du problème :
$ ls IMG*
IMG
> $ for i in `ls IMG*`; do echo $i; done
si un simple for i in IMG*;.. n'est pas une option (parce que vous avez
besoin d'une commande plus complexe, le plus simple est d'enlever
l'espace des seperateurs:
# que le return dans les seperateurs:
IFS="
"
for i in $(commande complexe); do echo $i;
j'ai du mal à comprendre la question mais globalement, la méthode
(
script1
) | while read param;do
script 2
done
fonctionne même dans les cas très complexes.
script1 peut etre terminé par un awk qui filtre pour donner un param
propre à script2.
Christian Loitsch wrote:
$ for i in `ls IMG*
salut tout le monde
une premiere approche serait de remplacer les espaces par un caractère neutre
genre underscore :
ls | tr -t " " "_"
ou avec awk :
ls | awk ' gsub (" ", "_")'
Patrice
En réponse à Jean-Max Reymond <[EMAIL PROTECTED]>:
> Yann Cochard wrote:
>
> >Bonjour,
> >
> >Les espace
En réponse à [EMAIL PROTECTED]:
pour faire complet voilà une solution possible :
ls | awk -f trspace
et crée un fichier trspace avec dedans les lignes
BEGIN {IFS="|"}
{
a=$_;
gsub (" ", "_");
gsub ("\'", "_");
print "mv \"" a "\" " $_
}
explications pour les non initiés à awk :
IFS : Input
Bonjour,
Merci à tous pour vos réponses concernant ce problème, je m'en suis sorti.
La commande "tr" est pratique.
Quelle connerie ces noms de fichiers avec des espaces dedans !
Je ne connais pas un seul OS qui les gère correctement (parmi Linux, windows,
HP-UX, SunOS, Tru64).
Yann
--