#1 Le 26/09/2017, à 10:21
- Mister Nono
rm -R avec expression régulière
Bonjour,
J'essaie de supprimer tous les fichiers qui correspondent au motif suivant (expression régulière) :
[b].*\ \(\d*\)\.[A-za-z]*[/b]
La commande rm -R | egrep ".*\ \(\d*\)\.[A-za-z]*" ne fonctionne pas.
Auriez-vous une idée pour faire cela efficacement ?
Merci d'avance car je cherche depuis bien longtemps déjà.
A+
La connaissance ne sert que si elle est partagée.
http://ms2i.net
Hors ligne
#2 Le 26/09/2017, à 10:38
- pingouinux
Re : rm -R avec expression régulière
Bonjour,
rm -R est une commande dangereuse, car la moindre erreur va se terminer en catastrophe, d'autant plus que tu ne sembles pas maîtriser les commandes…
Commence par faire ceci, pour voir si la liste que tu obtiens correspond bien aux fichiers et répertoires à supprimer :
for fic in .*\ \(\d*\)\.[A-za-z]*
do
echo "$fic"
done
Hors ligne
#3 Le 26/09/2017, à 10:54
- Mister Nono
Re : rm -R avec expression régulière
Bonjour,
J'ai crée un fichier "test.sh" contenant le code que tu m'as indiqué.
Ensuite je l'exécute en mode administrateur avec la commande "sh test.sh" mais j'obtiens l'erreur suivante :
test.sh: 2: test.sh: Syntax error: word unexpected (expecting "do")
Merci pour ton aide...
A+
PS : Je suis sûr de l'expression régulière (car je l'ai testée) et j'ai une sauvegarde de mes données.
Dernière modification par Mister Nono (Le 26/09/2017, à 10:57)
La connaissance ne sert que si elle est partagée.
http://ms2i.net
Hors ligne
#4 Le 26/09/2017, à 11:22
- pingouinux
Re : rm -R avec expression régulière
PS : Je suis sûr de l'expression régulière (car je l'ai testée) et j'ai une sauvegarde de mes données.
Excellente précaution !
Peux-tu donner le retour de
cat test.sh
Aouté :
Je ne sais pas quel éditeur tu utilises, mais les lignes de ton fichier se terminent vraisemblablement par '\r\n' au lieu de \n.
Dernière modification par pingouinux (Le 26/09/2017, à 11:29)
Hors ligne
#5 Le 26/09/2017, à 11:48
- serged
Re : rm -R avec expression régulière
Utiliser find :
find -regex "[b].*\ \(\d*\)\.[A-za-z]*[/b]" -delete
(faire déjà un test en supprimant le "-delete" !)
[edit : ajout de l'option -regex, sinon -iregex pour ignorer la casse]
Dernière modification par serged (Le 26/09/2017, à 11:55)
LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)
Hors ligne