Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/09/2017, à 11: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+ wink


La connaissance ne sert que si elle est partagée.
http://ms2i.net

Hors ligne

#2 Le 26/09/2017, à 11: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, à 11: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+ wink

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, à 11:57)


La connaissance ne sert que si elle est partagée.
http://ms2i.net

Hors ligne

#4 Le 26/09/2017, à 12: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, à 12:29)

Hors ligne

#5 Le 26/09/2017, à 12: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, à 12: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