Supprimer un dossier d'une liste
Harry974
-
Harry974 -
Harry974 -
Bonjour,
je dois faire un script qui liste les dossiers se trouvant dans un dossier principal, qui attribue a chacun un numéro, et lorsque l'utilisateur saisit un des numéros le dossier est supprimé.
Malheureusement pour l'instant je n'arrive qu'à lister les dossier et l'espace qu'ils occupent et leur arborescence avec ce bout de script :
REP_SAUV=/toto/
ls -tr ${REP_SAUV} | \
while read rep
do
if [ -d ${REP_SAUV}/${rep} ]
then
printf "%-108s (%7s Mo)\n" "$(ls -ld ${REP_SAUV}/${rep})" "$(du -m -s ${REP_SAUV}/${rep} | cut -f1)"
else
printf "%-108s\n" "$(ls -ld ${REP_SAUV}/${rep})"
fi
done
voilà il faudrait que je rajoute une commande qui liste les dossiers en attribuant un chiffre, puis que l'utilisateur puisse supprimer un dossier en entrant un des chiffres...
Quelqu'un a une piste svp ?
je dois faire un script qui liste les dossiers se trouvant dans un dossier principal, qui attribue a chacun un numéro, et lorsque l'utilisateur saisit un des numéros le dossier est supprimé.
Malheureusement pour l'instant je n'arrive qu'à lister les dossier et l'espace qu'ils occupent et leur arborescence avec ce bout de script :
REP_SAUV=/toto/
ls -tr ${REP_SAUV} | \
while read rep
do
if [ -d ${REP_SAUV}/${rep} ]
then
printf "%-108s (%7s Mo)\n" "$(ls -ld ${REP_SAUV}/${rep})" "$(du -m -s ${REP_SAUV}/${rep} | cut -f1)"
else
printf "%-108s\n" "$(ls -ld ${REP_SAUV}/${rep})"
fi
done
voilà il faudrait que je rajoute une commande qui liste les dossiers en attribuant un chiffre, puis que l'utilisateur puisse supprimer un dossier en entrant un des chiffres...
Quelqu'un a une piste svp ?
A voir également:
- Supprimer un dossier d'une liste
- Supprimer rond bleu whatsapp - Guide
- Liste déroulante excel - Guide
- Impossible de supprimer un dossier - Guide
- Supprimer une page word - Guide
- Mettre un mot de passe sur un dossier - Guide
17 réponses
euh oui merci mais premièrement je veux supprimer le fichier et deuxièment je vois pas en quoi ça m'aide...
Salut,
pour supprimer un répertoire il faut utliser l'option -R de la commande rm
106485010510997108
pour supprimer un répertoire il faut utliser l'option -R de la commande rm
rm -R /chemin/vers/rep--
106485010510997108
Quand tu disais attribuer un numero, j'ai pensé que tu voulais changer le nom des repertoires en y incluant un index, et ensuite supprimer le dossier dont l'index correspond au numéro rentrer par l'utlisateur.
L'utilitaire awk permet se genre de manipulation.
si tu pipe le resultat de ton script avec la commande
awk '{i++;print i $1;}'
tu obtiendra en sortie la liste dont chaque ligne commencera par un index.
L'utilitaire awk permet se genre de manipulation.
si tu pipe le resultat de ton script avec la commande
awk '{i++;print i $1;}'
tu obtiendra en sortie la liste dont chaque ligne commencera par un index.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ou plutôt
La commande
<code> awk '{print $2}'</code permettra d'extraire le 2eme champ de chaque ligne (i.e supprimer les index de ta liste)
awk '{i++;print(i, $1);}'qui espace l'index et le reste de la ligne
La commande
<code> awk '{print $2}'</code permettra d'extraire le 2eme champ de chaque ligne (i.e supprimer les index de ta liste)
en fait ce que je veux c'est faire une liste des dossiers :
1) dossier1
2) dossier2
....
ensuite je demande à l'utilisateur "Quel dossier voulez-vous supprimer ?"
supposons qu'il tape 4, alors cela supprime le dossier correspondant au numéro 4.
1) dossier1
2) dossier2
....
ensuite je demande à l'utilisateur "Quel dossier voulez-vous supprimer ?"
supposons qu'il tape 4, alors cela supprime le dossier correspondant au numéro 4.
Salut,
Voilà une façon de faire :
Voilà une façon de faire :
[tmpfs]$ cat foo.sh #! /bin/bash rep="/home/$USER/" ls -F "$rep" | grep "/$" | cat -n echo echo "Quel répertoire voulez-vous supprimer ?" read choix echo echo "rm -rf ${rep}$(ls -F "$rep" | grep "/$" | sed -n "${choix}p")" [tmpfs]$ ./foo.sh 1 bin/ 2 Desktop/ 3 Documents/ 4 dosemu/ 5 GNUstep/ 6 Images/ 7 mail/ 8 Musique/ 9 PicasaDocuments/ 10 Programmes/ 11 public_html/ 12 sh/ 13 smb4k/ 14 Téléchargement/ 15 tmp/ 16 Vidéo/ Quel répertoire voulez-vous supprimer ? 14 rm -rf /home/jp/Téléchargement/ [tmpfs]$N'oublie pas d'enlever le "echo" de la commande "rm" si toutefois le script répond à tes attentes ;-))
Oui c'est presque ce que je veux, est-il possible d'afficher à côté de chaque dossier l'espace occupé sur le disque dur ?
Modifie le script comme suit :
#! /bin/bash rep="/home/$USER/" for fic in $(ls -F "$rep" | grep "/$");do du -hs ${rep}${fic} 2>/dev/null;done | nl -s " : Taille : " echo echo "Quel répertoire voulez-vous supprimer ?" read choix echo echo "rm -rf ${rep}$(ls -F "$rep" | grep "/$" | sed -n "${choix}p")";-))
Voilà ce que ça donne chez moi :
[tmpfs]$ ./foo.sh 1 : Taille : 104K /home/jp/bin/ 2 : Taille : 52K /home/jp/Desktop/ 3 : Taille : 34M /home/jp/Documents/ 4 : Taille : 13K /home/jp/dosemu/ 5 : Taille : 660K /home/jp/GNUstep/ 6 : Taille : 9,7M /home/jp/Images/ 7 : Taille : 4,0K /home/jp/mail/ 8 : Taille : 4,0K /home/jp/Musique/ 9 : Taille : 0 /home/jp/PicasaDocuments/ 10 : Taille : 59M /home/jp/Programmes/ 11 : Taille : 44K /home/jp/public_html/ 12 : Taille : 189K /home/jp/sh/ 13 : Taille : 0 /home/jp/smb4k/ 14 : Taille : 33M /home/jp/Téléchargement/ 15 : Taille : 1,3M /home/jp/tmp/ 16 : Taille : 28K /home/jp/Vidéo/ Quel répertoire voulez-vous supprimer ? 8 rm -rf /home/jp/Musique/ [tmpfs]$;-))
tu peux remettre la ligne à modifier en faisant des retours à la ligne stp car dans l'autre post ça s'arrête à "Ta" ...
for fic in $(ls -F "$rep" | grep "/$") do du -hs ${rep}${fic} 2>/dev/null done | nl -s " : Taille : "
trop bizarre le script s'exécute mais la liste n'apparaît pas, car ensuite quand je tape un chiffre pour supprimer on m'afiche bien le dossier qui correspond au nombre :/
ah je pense savoir peut être pourquoi, c'est parce que je dois mettre le script dans un fichier avec en tête #!/bin/ksh ... ça vient de là le problème ?
c'est bon j'ai bidouillé un truc j'ai pris ta boucle for et j'ai changé le "do" par mon printf de l'énoncé.
script :
for fic in $(ls -F "${REP_SAUV}" | grep "/$")
do printf "%-60s (%5s Mo)\n" "$(ls -ld ${REP_SAUV}${fic} | awk '{print $9}')" "$(du -m -s ${REP_SAUV}${fic} | cut -f1)"
done | nl -s " : Dossier : "
echo
read choix?"Quel repertoire voulez-vous supprimer ? (a pour aucun)"
if [[ ${choix} != [aA] ]] then
echo
cd ${REP_SAUV}
echo "rm -rf $(ls -F "${REP_SAUV}" | grep "/$" | sed -n "${choix}p")"
else
:
fi
ce qui donne :
1 : Dossier : /toto/FOKP_20080727/ (1414.82 Mo)
2 : Dossier : /toto/JBAR_20080514_PBTHREAD/ ( 0.61 Mo)
3 : Dossier : /toto/JBAR_20080521/ ( 0.38 Mo)
4 : Dossier : /toto/JBAR_20080521_bad/ ( 0.02 Mo)
Quel repertoire voulez-vous supprimer ? (a pour aucun)4
rm -rf JBAR_20080521_bad/
thanks a lot
script :
for fic in $(ls -F "${REP_SAUV}" | grep "/$")
do printf "%-60s (%5s Mo)\n" "$(ls -ld ${REP_SAUV}${fic} | awk '{print $9}')" "$(du -m -s ${REP_SAUV}${fic} | cut -f1)"
done | nl -s " : Dossier : "
echo
read choix?"Quel repertoire voulez-vous supprimer ? (a pour aucun)"
if [[ ${choix} != [aA] ]] then
echo
cd ${REP_SAUV}
echo "rm -rf $(ls -F "${REP_SAUV}" | grep "/$" | sed -n "${choix}p")"
else
:
fi
ce qui donne :
1 : Dossier : /toto/FOKP_20080727/ (1414.82 Mo)
2 : Dossier : /toto/JBAR_20080514_PBTHREAD/ ( 0.61 Mo)
3 : Dossier : /toto/JBAR_20080521/ ( 0.38 Mo)
4 : Dossier : /toto/JBAR_20080521_bad/ ( 0.02 Mo)
Quel repertoire voulez-vous supprimer ? (a pour aucun)4
rm -rf JBAR_20080521_bad/
thanks a lot