Pages : 1
#1 Le 22/08/2008, à 08:50
- vince59
rm -r sauf sur un repertoire
Hello,
Je souhaite faire un rm -r dans un repertoire rep afin de supprimer tous les repertoires et sous repertoires. Or ce repertoire rep contient un seul sous repertoire a ne pas supprimer par contre.
Comment faire
Merci
#2 Le 22/08/2008, à 08:57
- Compte anonymisé
Re : rm -r sauf sur un repertoire
Une solution :
tu migres ce répertoire ailleurs et quand tout est nettoyé tu recrées l'arborescence nécessaire.
@+
#3 Le 22/08/2008, à 08:58
- Totor
Re : rm -r sauf sur un repertoire
A mon avis, le plus simple :
1. Créer un dossier temporaire et y copier le sous-dossier que tu souhaites conserver (avec toute l'arborescence).
2. Supprimer le dossier dans sa totalité
3. Renommer le dossier temporaire en lieu et place du dossier initiale
-- Lucid Lynx --
Hors ligne
#4 Le 22/08/2008, à 09:18
- vince59
Re : rm -r sauf sur un repertoire
Ok mais comment fait-on un mv recursif ?
Merci
#5 Le 22/08/2008, à 09:24
- Totor
Re : rm -r sauf sur un repertoire
ben disons que si tu déplaces un dossier, tu déplaces forcément la sous arborescence....:/
-- Lucid Lynx --
Hors ligne
#6 Le 22/08/2008, à 09:35
- willom
Re : rm -r sauf sur un repertoire
Salut, j'ai une question du même genre, en fait je voudrais zipper tout une arborescence, sauf un dossier.
J'ai fouiné un peu, et j'ai trouvé ça :
zip -r monfichierzippé [^dossier_à_ignorer]*
En me plaçant évidemment à la racine de mon arborescence...
Cela semble fonctionner, mais il faut que le dossier à ignorer soit directement à la racine de l'arbo... Enfin c'est ce que j'ai compris d'après les résultats...
Je pense que ça peut te mettre sur une piste déjà, je suis en train de tester ça...
Et si quelqu'un pouvait me dire comment faire pour le zip...
Merci d'avance...
[EDIT] : Ben finalement ça ne marche pas avec rm ... donc bon... Désolé...
Dernière modification par willom (Le 22/08/2008, à 09:39)
Hors ligne
#7 Le 22/08/2008, à 09:48
- Totor
Re : rm -r sauf sur un repertoire
et quelque chose comme :
find <dossier> -name "*"|grep -v "<dossier non souhaité>"|zip <nomarchive> -@
au besoin, mettre l'arborescence complète pour le dossier non souhaité.
-- Lucid Lynx --
Hors ligne
#8 Le 22/08/2008, à 12:33
- claudius01
Re : rm -r sauf sur un repertoire
Bonjour,
Une autre solution consiste à supprimer les droits en écriture de ce répertoire par
$ chmod -w <répertoire_à_ne pas_supprimer>
puis faire le $ rm -r
et répondre 'n' à la question
rm: descend into write-protected directory `<répertoire_à_ne pas_supprimer>'?
et enfin rétablir les droits en écriture par
$ chmod +w <répertoire_à_ne pas_supprimer>
L'avantage, c'est que cela s'applique à plusieurs répertoires (et même à des fichiers) quel que soit leur niveau dans l'arborescence
Cordialement, A+
--
Claudius
Hors ligne
#9 Le 22/08/2008, à 12:48
- vince59
Re : rm -r sauf sur un repertoire
Merci
mais comment faire pour répondre non à la question si c'est dans un script ?
Merci
#10 Le 22/08/2008, à 13:06
- claudius01
Re : rm -r sauf sur un repertoire
Que le rm -r soit appelé de la ligne de commande ou d'un script, le comportement reste le même, tu auras toujours à répondre à la question qui est posée par ... rm -r sauf si, d'aventure, tu redirigerais le <stdin> (entrée standard)
De rien
Hors ligne
#11 Le 22/08/2008, à 13:41
- HP
Re : rm -r sauf sur un repertoire
Hello,
Je souhaite faire un rm -r dans un repertoire rep afin de supprimer tous les repertoires et sous repertoires. Or ce repertoire rep contient un seul sous repertoire a ne pas supprimer par contre.
Si tu connais le nom de ce dossier à éviter (et encore), une boucle for… avec un test…
genre :
cd "$dir"
for file in *; do
[[ "$file" != 'dossier à éviter' ]] && rm -r "$file"
done
non ? enfin, perso, c'est ce que je ferais… ou ça y ressemblerait fortement.
Dernière modification par HP (Le 22/08/2008, à 13:45)
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne
#12 Le 22/08/2008, à 13:54
- Totor
Re : rm -r sauf sur un repertoire
cd "$dir" for file in *; do [[ "$file" != 'dossier à éviter' ]] && rm -r "$file" done
non ? enfin, perso, c'est ce que je ferais… ou ça y ressemblerait fortement.
Oui, au début, c'est ce que je comptais faire mais on ne connait pas son arborescence réelle.
Du coup, si le dossier à conserver n'est pas directement dans le dossier à supprimer, ça ne marchera pas.
Pour exemple : contenu du dossier initial
-sous dossier 1
-----sous sous dossier 11
-----sous sous dossier 12
-sous dossier 2
si le dossier à conserver est sous sous dossier 11 ou sous sous dossier 12 alors ton script ne fonctionne pas car le shell retournera que sous dossier 1 et sous dossier 2
Sinon, rajoute l'option f au rm car si cette option n'est pas présente, il n'arrivera pas à supprimer un sous dossier.
-- Lucid Lynx --
Hors ligne
#13 Le 22/08/2008, à 14:06
- tiky
Re : rm -r sauf sur un repertoire
Merci
mais comment faire pour répondre non à la question si c'est dans un script ?Merci
yes n | ta_commande
Dernière modification par tiky (Le 22/08/2008, à 14:11)
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#14 Le 22/08/2008, à 15:46
- HP
Re : rm -r sauf sur un repertoire
Oui, au début, c'est ce que je comptais faire mais on ne connait pas son arborescence réelle.
Du coup, si le dossier à conserver n'est pas directement dans le dossier à supprimer, ça ne marchera pas.
Exact… mais bon, c'était précisé nulle part… ou j'ai loupé un truc ? Ce serait plus simple si on savait où il est censé être ce dossier… non ?! Et à la racine, pour un truc "précieux", ça serait pas mal…
Du coup, j'en sais rien… et comme le principal intéressé du topic pose beaucoup de question par rapport aux éclairements qu'il fournit lui même… je lâche l'affaire.
cat /dev/urandom >/dev/null 2>&1 #github
Hors ligne
#15 Le 22/08/2008, à 15:54
- Totor
Re : rm -r sauf sur un repertoire
Exact… mais bon, c'était précisé nulle part… ou j'ai loupé un truc ? Ce serait plus simple si on savait où il est censé être ce dossier… non ?! Et à la racine, pour un truc "précieux", ça serait pas mal…
Du coup, j'en sais rien… et comme le principal intéressé du topic pose beaucoup de question par rapport aux éclairements qu'il fournit lui même… je lâche l'affaire.
Je te l'accorde, ce n'est pas vraiment précisé mais le doute est là (à mon sens).
-- Lucid Lynx --
Hors ligne
Pages : 1