Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1291 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Shell-script (Besoin d'aide)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Shell-script (Besoin d'aide)

n°1557096
etudiant69
Posté le 08-05-2007 à 21:59:53  profilanswer
 

Bonsoir, j'ai un exercice assez complexe à faire, voila l'énnoncé:
 
 
 
Écrire un script-shell nettoyer.sh qui supprime à partir du répertoire courant tous les fichiers dont le nom se termine
par un caractère ’∼’ (même si le nom du fichier commence par un caractère ’.’) ou dont le nom débute et se termine par un caractère ’#’ ; ces fichiers sont fréquemment des fichiers temporaires. La suppression de ces fichiers devra s’effectuer récursivement dans toute la sous-arborescence du répertoire courant et devra fonctionner même à l’intérieur des sous-répertoire dont le nom commence par un caractère ’.’. Outre l’ensemble des commandes internes au shell bash, les seules commandes externes utilisables sont dirname, basename et bien entendu rm.
 
Votre script-shell NE DEVRA PAS utiliser les commandes ls, find, grep ou egrep.
 
 

Piste:
Je pensais que l'on pouvais par exemple afficher les fichiers que l'on souhaitait avec quelque chose qui ressemblerait a :
 
echo */[#]*[#] .*[~] *[~]
 
puis les supprimer avec un for:
 
 
for elu in $(echo */[#]*[#] .*[~] *[~]);
do
rm $elu
done
 
Bien sûr j'ecris tous ca, mais j'ai pas réussi à mettre ca en forme ....
 
Si on pourrait me guider sur cette piste ou une autre ca serait cool !

 
 :jap:  Merci d'avance !

mood
Publicité
Posté le 08-05-2007 à 21:59:53  profilanswer
 

n°1557097
etudiant69
Posté le 08-05-2007 à 22:34:32  profilanswer
 

Comment fonctionne la récursivité en shell script ?
 
Comme en C ?

n°1557098
TBone
Pouet.
Posté le 09-05-2007 à 00:08:31  profilanswer
 

y a pas moyen à coup d'un tar --remove-files dont l'output est redirigé vers /dev/null ?


---------------
A straight line is a special case of a curve. It's a curve which is uncurved. -- Susskind.
n°1557099
krifur
Posté le 09-05-2007 à 00:16:08  profilanswer
 

bah si il peut pas utiliser ls ca m etonnerait que tar soit autoriser
Sinon j suis pas top en shell script mais pour la recursivité c est rm -r (a utiliser avec precaution :D )

n°1557100
mikala
Souviens toi du 5 Novembre...
Posté le 09-05-2007 à 00:21:15  profilanswer
 

il faut demander sur programmation :o
je transfère ... [:cupra]


---------------
Intermittent du GNU
n°1557165
etudiant69
Posté le 09-05-2007 à 08:46:20  profilanswer
 

Pas de petit-idée ?

n°1557186
etudiant69
Posté le 09-05-2007 à 10:03:48  profilanswer
 

?

n°1557209
etudiant69
Posté le 09-05-2007 à 10:34:46  profilanswer
 

Voila un algorithme du script, si vous avez des suggestions pour le traduire, elles sont les bienvenues :
 
 
 
fonction chercher()
debut
 
dossier = $1
 
Pour tous les éléments du dossier
 Si (element est un fichier)   et  (element commence et fini par #)  ou  (element fini par ~)  ou  (élément commence par . et fini par ~)
   
    supprimer element
 Sinon
  Si element est un repertoire
   
   chercher() $element
  fin si
 fin si
 
fin
 
chercher () . // On oublie pas de lancer la recherche dans le repertoire courant

n°1557212
wackevat
Posté le 09-05-2007 à 10:36:14  profilanswer
 

Parcourir le contenu d'un repertoire :
for i in * .*; do
  blablabla
done
 
if [ -d $i ] pour verifier si $i est un repertoire.


Message édité par wackevat le 09-05-2007 à 10:39:16
n°1557285
etudiant69
Posté le 09-05-2007 à 12:00:53  profilanswer
 

Autre chose ?

mood
Publicité
Posté le 09-05-2007 à 12:00:53  profilanswer
 

n°1557325
olivthill
Posté le 09-05-2007 à 13:25:48  profilanswer
 

EDIT : ne pas tenir compte de ma solution, puisqu'il n'est pas possible d'utiliser "find" (et pourquoi pas programmer sans les mains et dans le noir ?)
 
Avec la commande find, la recherche se fait dans les sous-répertoires.

 find . -type f -exec ls {} \; ...autres paramètres... >liste_fichiers.tmp
 cat liste_fichiers.tmp|while read fic
 do
    ... supprimer un fichier...      
 done


Message édité par olivthill le 09-05-2007 à 13:27:56
n°1557492
etudiant69
Posté le 09-05-2007 à 17:28:51  profilanswer
 

Mon prof vient de me donner une info, il faut utiliser le resultat d'une commande echo comme un vecteur de variable ...
 
J'ai essayé, mais ca ne fonctionne pas, quelqu'un vois la ou les erreur et les modification à faire:
 
function nettoyer (){
 
elus=$(echo * .*)
 
for elu in $elus;do
if [ -e $elu -a -d $elu -a $elu != ".." -a $elu != "." ]
then
    cd $elu
    nettoyer
else
   if [ $elu=".*~" -o $elu="*#" -o $elu="*~" ]
   then
   rm $elu
   fi
fi
done
}


Message édité par etudiant69 le 09-05-2007 à 17:29:23
n°1557529
etudiant69
Posté le 09-05-2007 à 18:04:10  profilanswer
 

Pas d'idée ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Shell-script (Besoin d'aide)

 

Sujets relatifs
script permettant de générer des pages htmlCorrespondance des mots de passe entre mon script et phpbb?
[URGENT] besoin d'aide LoginFormaide recuperation donnees d'un fichier texte
script editAide sur la somme en VB
besoin d'aide urgent 
Plus de sujets relatifs à : Shell-script (Besoin d'aide)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR