A voir également:
- Supprimer un dossier d'une liste
- Liste déroulante excel - Guide
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Impossible de supprimer un dossier - 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...
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
25 juil. 2008 à 13:34
25 juil. 2008 à 13:34
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.
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
25 juil. 2008 à 14:06
25 juil. 2008 à 14:06
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 ?
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
25 juil. 2008 à 15:47
25 juil. 2008 à 15:47
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")";-))
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
25 juil. 2008 à 16:13
25 juil. 2008 à 16:13
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" ...
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
25 juil. 2008 à 16:20
25 juil. 2008 à 16:20
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 ?
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
25 juil. 2008 à 16:40
25 juil. 2008 à 16:40
Affiche ton script...
Que donne la ligne seule dans un shell ?
Que donne la ligne seule dans un shell ?
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