HELP!! Pb script!

HELP!! Pb script! - Shell/Batch - Programmation

Marsh Posté le 13-01-2007 à 16:17:48    

Bonjour,  
 
Je suis vraiment débutant sous Unix et j'aimerai créer un script Unix mais malheureusement j'y comprends rien :cry:  :cry: . Au secours j'ai besoin d'aide.
 
Il s'agit d'un changement de suffixe pour un ensemble de fichiers et/ou répertoires dans une arborescence unix  
 
Je souhaiterai écrire un script en cshell acceptant quatre paramètres en entrée.  
 
- l'ancien suffixe  
- le nouveau suffixe  
- deux chaînes alphanumériques  
 
Le script cherchera partout dans l'arboresce à partir duquel il est  
lancé, tous les fichiers ou répertoires ayant comme extension l'ancien suffixe, et les renommera en fonction du nouveau suffixe proposé sauf pour les noms fournis en troisième et quatrième arguments.  
 
Le script devra présenter un tableau indiquant en colonnes chaque élément renommé en précisant s'il s'agit d'un fichier ou un répertoire, la taille en octets et la date de dernière modification.  
Le nombre total de fichier renommés, ainsi que Le nombre de cas exclus sont à fournir également.
 
Connaissez-vous un script proche de celui ci qui pourrait m'aider :??: .  
 
Merci d'avance
Ded  
 

Reply

Marsh Posté le 13-01-2007 à 16:17:48   

Reply

Marsh Posté le 13-01-2007 à 20:16:26    

c'est pour les cours ? :)


---------------
Intermittent du GNU
Reply

Marsh Posté le 13-01-2007 à 23:30:15    

Tu vas trouvé ton bonheur ici:
http://abs.traduc.org/abs-4.1-fr/
 
Sous linux on encourage toujours à ce que chacun apprenne et se documente.
Par contre si tu bloques, on te dépanne.


Message édité par thierryR le 13-01-2007 à 23:31:33

---------------
Penguin online qui ne fait que des conneries, et qui aime ça. Membre du http://www.fonacon.net/
Reply

Marsh Posté le 14-01-2007 à 15:00:26    

mikala a écrit :

c'est pour les cours ? :)


 
Hé oui, malheureusement ce n'est pas pour mon plaisir :p

Reply

Marsh Posté le 14-01-2007 à 15:01:48    

donc ce n'est définitivement pas la bonne section.
tu devrais essayer sur programmation. [:cupra]
je transfert ton post .


---------------
Intermittent du GNU
Reply

Marsh Posté le 14-01-2007 à 15:06:57    

mikala a écrit :

donc ce n'est définitivement pas la bonne section.
tu devrais essayer sur programmation. [:cupra]
je transfert ton post .


 
Merci, désolé je ne savais pas. :wahoo:

Reply

Marsh Posté le 14-01-2007 à 20:41:07    

ded3869 a écrit :

Bonjour,  
 
Je suis vraiment débutant sous Unix et j'aimerai créer un script Unix mais malheureusement j'y comprends rien :cry:  :cry: . Au secours j'ai besoin d'aide.
 
Il s'agit d'un changement de suffixe pour un ensemble de fichiers et/ou répertoires dans une arborescence unix  
 
Je souhaiterai écrire un script en cshell acceptant quatre paramètres en entrée.  
 
- l'ancien suffixe  
- le nouveau suffixe  
- deux chaînes alphanumériques  
 
Le script cherchera partout dans l'arboresce à partir duquel il est  
lancé, tous les fichiers ou répertoires ayant comme extension l'ancien suffixe, et les renommera en fonction du nouveau suffixe proposé sauf pour les noms fournis en troisième et quatrième arguments.  
 
Le script devra présenter un tableau indiquant en colonnes chaque élément renommé en précisant s'il s'agit d'un fichier ou un répertoire, la taille en octets et la date de dernière modification.  
Le nombre total de fichier renommés, ainsi que Le nombre de cas exclus sont à fournir également.
 
Connaissez-vous un script proche de celui ci qui pourrait m'aider :??: .  
 
Merci d'avance
Ded


cshell ? t'es certain ??? C'est rare de voir des TP en cshell !!!
 
Je saurais le faire en shell... mais absolument pas en cshell.


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 15-01-2007 à 19:56:59    

Sve@r a écrit :

cshell ? t'es certain ??? C'est rare de voir des TP en cshell !!!
 
Je saurais le faire en shell... mais absolument pas en cshell.


 
Ben, c'est stipulé en cshell :??:  :??:

Reply

Marsh Posté le 18-01-2007 à 09:07:27    

ded3869 a écrit :

Ben, c'est stipulé en cshell :??:  :??:


Bon ben t'as sûrement un cours pour ça. Je vais essayer de te donner le principe en français tel que je le ferais en shell et faudra que t'adaptes au cshell...
 

ded3869 a écrit :

Je souhaiterai écrire un script en cshell acceptant quatre paramètres en entrée.  
 
- l'ancien suffixe  
- le nouveau suffixe  
- deux chaînes alphanumériques


Bon, pas compliqué, tu récupères les 4 paramètres dans 4 variables
 

ded3869 a écrit :

Le script cherchera partout dans l'arboresce à partir duquel il est  
lancé, tous les fichiers ou répertoires ayant comme extension l'ancien suffixe , et les renommera en fonction du nouveau suffixe proposé sauf pour les noms fournis en troisième et quatrième arguments.


Là, le "find" te sera utile. Il faut que tu fasses une boucle sur chaque nom renvoyé par le find. Tu compares ce nom avec tes arguments 3 et 4 et s'ils ne sont pas identiques, tu crées le nouveau nom en utilisant l'argument 2 puis tu fais un "mv ancien_non nouveau_nom"
Syntaxe du find: find . -name "*.extension" -print (les guillemets après "name" sont obligatoires)
 

ded3869 a écrit :

Le script devra présenter un tableau indiquant en colonnes chaque élément renommé en précisant s'il s'agit d'un fichier ou un répertoire, la taille en octets et la date de dernière modification.


Pour récupérer les infos demandées, tu peux faire un "ls -ld nom" ou "stat nom". Les 2 commandes te renvoient des infos sur le nom que tu peux filtrer avec "grep" et/ou "cut". Tu peux afficher les infos que tu récupères immédiatement après les avoir récupérées (donc dans la boucle) sans t'embêter à les stocker pour les afficher à la fin du script car c'est pas demandé
 

ded3869 a écrit :

Le nombre total de fichier renommés, ainsi que Le nombre de cas exclus sont à fournir également.


Deux petits compteurs en plus...
 

ded3869 a écrit :

Connaissez-vous un script proche de celui ci qui pourrait m'aider :??: .


Même si on avait ce genre de truc en stock, tu perdrais plus de temps à le modifier qu'à tout faire de zéro. Avec des exemples simples cshell sur chaque type d'opération que t'as à faire (récupérer et traiter un résultat de commande ligne par ligne, découper une chaîne, en créer une autre, etc) tu peux t'en sortir. Surtout que normallement on t'envoie pas au charbon sans billes pour t'en sortir...

Message cité 1 fois
Message édité par Sve@r le 21-01-2007 à 21:52:40

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 20-01-2007 à 13:47:45    

Sve@r a écrit :

Bon ben t'as sûrement un cours pour ça. Je vais essayer de te donner le principe en français tel que je le ferais en shell et faudra que t'adaptes au cshell...
 
 
Bon, pas compliqué, tu récupères les 4 paramètres dans 4 variables
 
 
Là, le "find" te sera utile. Il faut que tu fasses une boucle sur chaque nom renvoyé par le find. Tu compares ce nom avec tes arguments 3 et 4 et s'ils ne sont pas identiques, tu crées le nouveau nom en utilisant l'argument 2 puis tu fais un "mv ancien_non nouveau_nom"
Syntaxe du find: find . -name "*.extension" -print (les guillemets après "name" sont obligatoires)
 
 
Pour récupérer les infos demandées, tu peux faire un "ls -ld nom" ou "stat nom". Les 2 commandes te renvoient des infos sur le nom que tu peux filtrer avec "grep" et/ou "cut". Tu peux afficher les infos que tu récupères immédiatement après les avoir récupérées (donc dans la boucle) sans t'embêter à les stocker pour les afficher à la fin du script car c'est pas demandé
 
 
 
 
Même si on avait ce genre de truc en stock, tu perdrais plus de temps à le modifier qu'à tout faire de zéro. Avec des exemples simples cshell sur chaque type d'opération que t'as à faire (récupérer et traiter un résultat de commande ligne par ligne, découper une chaîne, en créer une autre, etc) tu peux t'en sortir. Surtout que normallement on t'envoie pas au charbon sans billes pour t'en sortir...


 
 
 
Merci pour tout :sol:  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed