> Tous les forumsLinux

 renommer des fichiers *.sxw en *.dot
Statut du sujet : NON RESOLU Imprimer
 ludoweb13
  Posté le 04/01/2006 @ 22:39  
 Petit astucien

6 Messages
Salut à tous, et très bonne année 2006, Voilà à nouveau j'ai besoins de vos lumières. Dans mon Entreprise nous utilisons OpenOffice sous Mandriva 2006, sur 5 PC, nous avons la dernière version de OpenOffice 2.01, jusque là pas de problème. Par contre, comme nous avons plusieurs centaines de fichiers en *.sxw pour le traitement de textes, et idem pour calc, etc... à chaque fois que nous ouvrons un fichier en *.sxw, lors de la sauvegarde"conversion" *.dot, il y a souvent un blème... souvent il est enregistré 2 fois, avec son propre dossier dupliqué, là me demandez par le pourquoi... Par contre lorsque l'on renomme à la main un *.sxw en *.dot, que l'on ouvre par la suite, sa sauvegarde est très bien faite. D'où ma question : Existe-t-il une formule en console qui permettrait de renommer l'ensemble de nos fichiers *.sxw en *.dot et ceci en prenant en compte ques ces fichiers sont dissiminés dans de nombreux dossiers et sous dossiers. Merci pour votre aide. Ludo.
 Afficher le profil de ludoweb13Envoyer un message privé à ludoweb13
 
 
Publicité
 ssssseb  Posté le 04/01/2006 à 23:29  
Astucien

1570 Messages
Salut ludo ! [hello] Je ne comprends pas très bien le problème, mais voici une solution possible que tu peux entrer dans la console [bigsmile]... D'abord, il faut savoir dans quel(s) dossier(s) se trouvent les documents à convertir. Je supposerai ici que c'est dans /home/bob/documents, mais tu pourras bien sûr remplacer par ce qui convient. La commande qui te fera tout ça : [code]for i in $(find /home/bob/documents -type f -name "*.sxw"); do rename 's/\.sxw$/.dot/' $i; done[/code] Je ne suis pas sûr que ce soit la méthode la plus efficace, mais ça marche bien quand même [timide]... [chinois]

Modifié par ssssseb le 05/01/2006 00:11
Afficher le profil de ssssseb Voir la configuration de ssssseb
 Revenir en haut de la page
 ludoweb13  Posté le 05/01/2006 à 00:02  
Petit astucien

6 Messages
Salut, Seb, Merci pour ta réponse très rapide... Je constate que l'entraide sur les forum linux est toujours aussi réactive... Dès que je suis au Bureau, demain matin, j'essaie et je te tiens au courant Par acquit de conscience, j'ai voulu essayer chez moi, sur mon pc perso, mais rien ne se passe... mes quelques fichiers *.sxw restent toujours avec la même extension, pas de modif en *.dot... J'ai bien copié ta formule mais quid de modif... Aurais-je loupé quelque chose, dois-je me mettre en root pour effectuer cette modif. Merci pour ta réponse. Ludo.
Afficher le profil de ludoweb13Envoyer un message privé à ludoweb13
 Revenir en haut de la page
 ssssseb  Posté le 05/01/2006 à 00:11  
Astucien

1570 Messages
Resalut ludoweb13 ! [hello]
Par acquit de conscience, j'ai voulu essayer chez moi, sur mon pc perso, mais rien ne se passe... mes quelques fichiers *.sxw restent toujours avec la même extension, pas de modif en *.dot...
Pourtant j'ai testé de mon côté, et ça a fonctionné [confus]. J'ai créé par exemple 100 fichiers .sxw dans un Répertoire, 100 autres dans un sous-répertoire et encore 100 autres dans un autre sous-répertoire comme suit : [code]mkdir test ; cd test mkdir d1 d2 for i in $(seq 1 100); do touch test_$i.sxw; done; cd d1 for i in $(seq 1 100); do touch test_$i.sxw; done; cd ../d2 for i in $(seq 1 100); do touch test_$i.sxw; done; cd .. for i in $(find . -type -f -name "*.sxw"); do rename 's/\.sxw$/.dot/' $i; done[/code] Je retente sur-le-champ pour être certain... Statut du test : OK Remplace find /home/bob/documents -type -f -name "*.sxw" par le Répertoire approprié surtout [clindoeil]. EDIT : Il faut que les fichiers t'appartiennent pour que tu puisses les modifier (simple vérification [langue]). Redonnes-en-moi des nouvelles ! [chinois]

Modifié par ssssseb le 05/01/2006 00:13
Afficher le profil de ssssseb Voir la configuration de ssssseb
 Revenir en haut de la page
 ludoweb13  Posté le 05/01/2006 à 12:08  
Petit astucien

6 Messages
Resalut Seb, Donc les toutes dernières nouvelles, J'ai essayé au Bureau, et bien nada, rien ne se passe; J'ai même fait la manipe sur plusieurs PC sous mandriva 2006, là aussi, rien ne se passe, aucune modif. A chaque fois, j'ai bien mis le /home/.... spécifique à chaque dossier, mais toujours rien... Serait-ce Mandriva 2006 qui pose problème. Merci encore à toi pour ton aide. Ludo.
Afficher le profil de ludoweb13Envoyer un message privé à ludoweb13
 Revenir en haut de la page
 ssssseb  Posté le 05/01/2006 à 19:34  
Astucien

1570 Messages
Resalut ludoweb13 [hello]
Tu mets bien cette commande ? => [code]for i in $(find /home/... -type -f -name "*.sxw"); do rename 's/\.sxw$/.dot/' $i; done[/code] Dans ce cas, je serais curieux de voir ce que te donne ceci :
for i in $(find . -type -f -name "*.sxw"); do rename 's/\.sxw$/.dot/' $i; done 2> /home/bob/fichier_sxw_a_dot.txt
Tu devrais en principe avoir des erreurs qui seront affichées dans fichier_sxw_a_dot.txt (en n'oubliant pas de remplacer bob par le bon Répertoire).
OUBLIE ÇA [dent][dent][dent]... J'ai fait l'erreur la plus idiote qu'il était possible de faire : te fournir une commande invalide (c'est -type f et non pas -type -f) [pleurer]... Mais je remarque que c'est ce que je t'avais mis au début, donc voyons voir ce que donne les erreurs en ajoutant 2> /home/ton_repertoire/test_erreur.txt. D'abord, on va s'assurer qu'il n'y ait pas d'espace dans les noms de fichiers :
for a in $(find /home/ton_repertoire -type f);do b=$(echo $a | sed -e 's/[[:blank:]]/_/g'); if [ -e "$b" ];then echo "">/dev/null; else mv "$a" "$b"; fi; done
Une fois ceci fait, la commande suivante devrait fonctionner également (désolé encore [langue]) :
for i in $(find /home/ton_repertoire -type f -name "*.sxw"); do rename 's/\.sxw$/.dot/' $i; done 2> /home/ton_repertoire/test_erreur.txt
Si ça ne marche pas, dis-nous ce que tu as dans le fichier test_erreur.txt [triste]. J'espère que ça sera bon cette fois [grincheux]. Bonne chance et à bientôt ! [chinois]

Modifié par ssssseb le 05/01/2006 19:38
Afficher le profil de ssssseb Voir la configuration de ssssseb
 Revenir en haut de la page
 ludoweb13  Posté le 05/01/2006 à 19:56  
Petit astucien

6 Messages
Resalut Seb, D'abord, on va s'assurer qu'il n'y ait pas d'espace dans les noms de fichiers : j'ai entrée ta formule, après l'invite $ rien... Une fois ceci fait, la commande suivante devrait fonctionner également (désolé encore ) : ta formule une fois entrée, après l'invite $ rien... et dans mon dossier apparaît le fichier "test_erreur.txt", mais à l'intérieur rien... Les fichiers en *.sxw sont toujours là... Que dois-je faire maintenant??? mofifier mes fichiers un à un. Désolé pour tout ce tracas... A+ Ludo.
Afficher le profil de ludoweb13Envoyer un message privé à ludoweb13
 Revenir en haut de la page
 ssssseb  Posté le 05/01/2006 à 20:05  
Astucien

1570 Messages
C'est moi qui est désolé [confus]... Pourtant chez moi ça fonctionne bien. Je suis en train de te faire un petit script à la place, car là [bigsmile]... Je te reviens sous peu, pardonne-moi [rougir]. Avancée #1 : Un truc coince en utilisant find dans certains cas, je vais tenter de voir pourquoi [grincheux].

Modifié par ssssseb le 05/01/2006 20:12
Afficher le profil de ssssseb Voir la configuration de ssssseb
 Revenir en haut de la page
 ssssseb  Posté le 05/01/2006 à 20:29  
Astucien

1570 Messages
[bigsmile]... Pour supprimer les espaces dans tes noms de fichiers, est-ce que la commande suivante fonctionne ?
find /home/le_repertoire -depth -name "*\ *" -exec rename 's/\ /_/g' {} \;
Si tu veux éviter de tout bousiller, je te recommande de créer un Répertoire test dans lequel tu mettras plusieurs fichiers :
cd ~; mkdir test; cd test; for i in $(seq 1 50); do touch fichier#${i}.sxw; done
Ainsi que quelques fichiers avec des espaces :
for i in $(seq 1 10); do touch fic\ #$i.txt; done
Alternativement, tu peux aussi créer des sous-répertoires avec des fichiers dans l'un d'eux pour voir si la récursivité est présente :
mkdir d1 d2 d3 d4 d5; cd d1; for i in $(seq 1 25); do touch mon_fichier#$i.sxw; done; cd ..
Je cherche toujours de mon côté [clindoeil]. [chinois]

Modifié par ssssseb le 05/01/2006 20:30
Afficher le profil de ssssseb Voir la configuration de ssssseb
 Revenir en haut de la page
 ssssseb  Posté le 05/01/2006 à 21:05  
Astucien

1570 Messages
Bon j'ai fini par trouver quelque chose qui évite les boucles en n'utilisant que find [happy]. Je te le mets sous forme de script, car c'est plus pratique (et tu pourras ensuite repasser des .dot aux .sxw très facilement) :
#!/bin/bash ########################################################## # Script qui renomme les fichiers récursivement # (tous les sous-répertoires sont pris en compte) # pour un suffixe donné. # Ex : Tous les fichiers .sxw seront transformés en .dot ########################################################## # Extension à renommer extension1='.sxw' # Extension voulue extension2='.dot' # Répertoire à partir duquel l'on devra # renommer les fichiers ciblés repertoire="/home/ton_repertoire" # Remplace toutes les espaces par des soulignés : _ find ${repertoire} -depth -name "*\ *" -exec rename 's/\ /_/g' {} \; # Étape de renommage des fichiers de l'extension1 à l'extension2 find ${repertoire} -type f -name "*${extension1}" -exec rename "s/${extension1}$/${extension2}/" {} \; # Affiche un message de fin echo "Tous vos fichiers ${extension1} ont été soigneusement renommés en ${extension2}."
Colle donc ceci dans le Répertoire souhaité (tant que tu mets le chemin complet à cette ligne repertoire="/home/ton_repertoire"), appelle le fichier comme tu veux (sxw_dot.sh par exemple) et rends-le exécutable : [code]chmod 700 /emplacement/de/sxw_dot.sh[/code] Ensuite, exécute-le (après avoir modifié ton_repertoire !), ça devrait bien passer cette fois (mais je te réécris pour être certain que je t'encourage à tester ceci dans un Répertoire de test que tu auras créé [langue]). Bonne chance camarade ! [chinois]

Modifié par ssssseb le 05/01/2006 21:07
Afficher le profil de ssssseb Voir la configuration de ssssseb
 Revenir en haut de la page
 ludoweb13  Posté le 05/01/2006 à 21:57  
Petit astucien

6 Messages
Salut à toi, Oh Seb, Merci beaucoup pour ta sollicitude, je vois qu'avec linux, l'entraide fonctionne plus que bien, j'en suis même plus qu'agréablement surpris... Concernant tes nouvelles directives, je serai plus tranquille demain matin. Dès mon arrivée au Bureau, je m'y mets sérieusement, et je te tiens au courant dans mes pérégrination... j'espère cette fois pour un bon résultat... Merci encore pour ton aide ; Vive le libre!!!! A+ Ludo.
Afficher le profil de ludoweb13Envoyer un message privé à ludoweb13
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte




Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsLinux

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page