Ls -R aide
Fermé
Mirah87
Messages postés
4
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
30 décembre 2006
-
9 déc. 2006 à 22:54
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 10 déc. 2006 à 18:40
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 10 déc. 2006 à 18:40
A voir également:
- Ls -R aide
- Chkdsk c /f /r - Guide
- 'Ls' n’est pas reconnu en tant que commande interne - Forum Windows
- R/o - Forum Excel
- R à l'envers - Forum Réseaux sociaux
- Commande windows r - Guide
7 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
9 déc. 2006 à 23:04
9 déc. 2006 à 23:04
Salut,
Peux-tu nous afficher ton script s'il te plaît, Merci.
À mon avis il ne doit pas y avoir grand chose à y changer...
;-))
Peux-tu nous afficher ton script s'il te plaît, Merci.
À mon avis il ne doit pas y avoir grand chose à y changer...
;-))
Mirah87
Messages postés
4
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
30 décembre 2006
9 déc. 2006 à 23:15
9 déc. 2006 à 23:15
I=' '
F=' '
SORTIE=' '
ERREUR=0
# I prend la valeur -i si l'utilisateur entre en premier argument -i sinon il garde sa valeur initiale (I=' ').
# F prend la valeur -f si l'utilisateur entre en premier argument -f sinon il garde sa valeur initiale (F=' ').
# Si l'utilisateur a entré l'option -f, alors tous les messages d'erreurs seront dirigés vers /dev/null.
case $1 in
'-i')
I="-i";;
'-f')
F="-f"
SORTIE="2>/dev/null";; # Si l'option est -f, on dirige les erreurs vers /dev/null
*)
ERREUR=1
echo $1 ": option invalide."
echo "Veuillez utiliser -i (mode interactif) oui -f (mode silencieux)";;
esac
# Si l'utilisateur a entré une option valide (ERREUR != 1), alors le programme effacera les fichiers correspondants au 2e argument.
# Selon l'option entrée en premier argument, on aura rm -i ou rm -f.
# Si l'option est -f, les erreurs n'apparaitront pas à l'écran.
if [ $ERREUR -ne 1 ]
then
case $2 in
'emacs')
rm $I $F *~ \#*\# $SORTIE;;
'log')
rm $I $F *.log $SORTIE;;
'latex')
rm $I $F *.log *.aux *.bbl $SORTIE;;
'tout')
rm $I $F *{~,#,.log,.aux,.bbl} $SORTIE;;
*)
echo $2 ": Type de fichier non effaçable.";;
esac
fi
F=' '
SORTIE=' '
ERREUR=0
# I prend la valeur -i si l'utilisateur entre en premier argument -i sinon il garde sa valeur initiale (I=' ').
# F prend la valeur -f si l'utilisateur entre en premier argument -f sinon il garde sa valeur initiale (F=' ').
# Si l'utilisateur a entré l'option -f, alors tous les messages d'erreurs seront dirigés vers /dev/null.
case $1 in
'-i')
I="-i";;
'-f')
F="-f"
SORTIE="2>/dev/null";; # Si l'option est -f, on dirige les erreurs vers /dev/null
*)
ERREUR=1
echo $1 ": option invalide."
echo "Veuillez utiliser -i (mode interactif) oui -f (mode silencieux)";;
esac
# Si l'utilisateur a entré une option valide (ERREUR != 1), alors le programme effacera les fichiers correspondants au 2e argument.
# Selon l'option entrée en premier argument, on aura rm -i ou rm -f.
# Si l'option est -f, les erreurs n'apparaitront pas à l'écran.
if [ $ERREUR -ne 1 ]
then
case $2 in
'emacs')
rm $I $F *~ \#*\# $SORTIE;;
'log')
rm $I $F *.log $SORTIE;;
'latex')
rm $I $F *.log *.aux *.bbl $SORTIE;;
'tout')
rm $I $F *{~,#,.log,.aux,.bbl} $SORTIE;;
*)
echo $2 ": Type de fichier non effaçable.";;
esac
fi
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 déc. 2006 à 00:17
10 déc. 2006 à 00:17
De la façon dont est construit ton script, je ne vois pas comment tu pourrais parcourrir et effacer les fichiers correspondants à ton paramètre "$2" récursivements, du moins en employant "ls -R", dans la mesure où cette commande se contente d'afficher les répertoires (et sous-répertoires) et leur contenu sans leur chemin absolu !
Par contre en employant "find" combiné à "-exec", c'est envisageable...
Voilà à titre d'exemple ce que pourrait donner la ligne pour "log" :
;-))
Par contre en employant "find" combiné à "-exec", c'est envisageable...
Voilà à titre d'exemple ce que pourrait donner la ligne pour "log" :
find /répertoire -name "*.log" -exec rm $I $F {} $SORTIE \;A adapter selon tes besoins...
;-))
Javais penser a faire
d=liste des dossiers (je peux les avoir avec ls -R ????)
ensuite
for $d in "liste des dossiers"
t=$d/*.log
et joré just a rajouté $t :
rm $I $F $t log
d=liste des dossiers (je peux les avoir avec ls -R ????)
ensuite
for $d in "liste des dossiers"
t=$d/*.log
et joré just a rajouté $t :
rm $I $F $t log
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 déc. 2006 à 10:17
10 déc. 2006 à 10:17
Re-
Non, ce n'est pas la bonne solution.
Comme expliqué dans mon post précédent, "ls -R" ne te renverra qu'une liste de dossiers (et fichiers, il faudrait un truc du genre "ls -R | grep "/$"" pour n'avoir que les répertoires...) sans leur chemin absolu et de ce fait dès que tu auras quitté le répertoire racine, tu auras droits à un message d'erreur pour tous les autres dossiers.
A la limite il vaut mieux un truc du genre :
Non, ce n'est pas la bonne solution.
Comme expliqué dans mon post précédent, "ls -R" ne te renverra qu'une liste de dossiers (et fichiers, il faudrait un truc du genre "ls -R | grep "/$"" pour n'avoir que les répertoires...) sans leur chemin absolu et de ce fait dès que tu auras quitté le répertoire racine, tu auras droits à un message d'erreur pour tous les autres dossiers.
A la limite il vaut mieux un truc du genre :
for rep in $(find -type d); do rm $I $F ${rep}/*.log ; done
Mirah87
Messages postés
4
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
30 décembre 2006
10 déc. 2006 à 15:24
10 déc. 2006 à 15:24
J'ai un autre probleme (plus simple je pense)
Je dois afficher
"Le parametre $i est $k" ou "L'option $j est $k" selon si le parametre commence par un tiret ou pas.
J'ai fait une boucle if [ $k = "-*" ] then echo Loption etc
else echo Le parametre est ...
Mais il m'affiche toujours "Le parametre..." meme si il s'agit d'une option.
Savez vous pourquoi ?
Je dois afficher
"Le parametre $i est $k" ou "L'option $j est $k" selon si le parametre commence par un tiret ou pas.
J'ai fait une boucle if [ $k = "-*" ] then echo Loption etc
else echo Le parametre est ...
Mais il m'affiche toujours "Le parametre..." meme si il s'agit d'une option.
Savez vous pourquoi ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
10 déc. 2006 à 18:40
10 déc. 2006 à 18:40
Re-
[jp@MDK tmpfs]$ set d [jp@MDK tmpfs]$ echo $1 d [jp@MDK tmpfs]$ if [ "x$1" = "x-o" ];then echo "option"; else echo "paramètre";fi paramètre [jp@MDK tmpfs]$ set -- "-o" [jp@MDK tmpfs]$ echo $1 -o [jp@MDK tmpfs]$ if [ "x$1" = "x-o" ];then echo "option"; else echo "paramètre";fi option [jp@MDK tmpfs]$;-))