Suppression fichiers via une regex.
Fermé
pcsystemd
Messages postés
691
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
15 janvier 2024
-
11 août 2021 à 08:15
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 - 17 août 2021 à 13:56
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 - 17 août 2021 à 13:56
A voir également:
- Suppression fichiers via une regex.
- Forcer suppression fichier - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Renommer plusieurs fichiers - Guide
- Explorateur de fichiers - Guide
- Suppression page word - Guide
3 réponses
mamiemando
Messages postés
33081
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
27 avril 2024
7 749
Modifié le 16 août 2021 à 14:31
Modifié le 16 août 2021 à 14:31
Bonjour,
Je ne pense pas que la commande que tu proposes fasses ce que tu as prévu de faire (tu ne vas supprimer que
Une expression rationnelle peut permettre de supprimer les fichiers
Tu peux par utiliser l'expression rationnelle
Exemple :
Bonne chance
Je ne pense pas que la commande que tu proposes fasses ce que tu as prévu de faire (tu ne vas supprimer que
log.11.gzet
log.12.gz).
Une expression rationnelle peut permettre de supprimer les fichiers
mv.log.6.gzà
mv.log.12.gz, mais ne sera pas aussi limpide que ce qu'on pourrait espérer. En effet, une expression rationnelle raisonne caractère par caractère (et ne permet donc pas de définir une clause basée sur des valeur numérique, dans ton cas
>= 6).
Tu peux par utiliser l'expression rationnelle
mv.log.([6-9]|1[0-2]).gzqui signifie :
- quelque chose qui contient
mv.log.
; - suivi d'un caractère compris entre
'6'
et'9'
(au sens ASCII), ou du caractère'1'
suivi d'un caractère compris entre'0'
et'2'
; - suivi des caractères
'.gz'
.
Exemple :
(mando@silk) (~) $ mkdir toto
(mando@silk) (~) $ cd toto
(mando@silk) (~/toto) $ for i in $(seq 1 12); do touch mv.log.$i.gz; done
(mando@silk) (~/toto) $ ls
mv.log.10.gz mv.log.12.gz mv.log.2.gz mv.log.4.gz mv.log.6.gz mv.log.8.gz
mv.log.11.gz mv.log.1.gz mv.log.3.gz mv.log.5.gz mv.log.7.gz mv.log.9.gz
(mando@silk) (~/toto) $ find . | egrep "mv.log.([6-9]|1[0-2]).gz"
./mv.log.10.gz
./mv.log.6.gz
./mv.log.7.gz
./mv.log.9.gz
./mv.log.12.gz
./mv.log.8.gz
./mv.log.11.gz
(mando@silk) (~/toto) $ rm $(find . | egrep "mv.log.([6-9]|1[0-2]).gz")
(mando@silk) (~/toto) $ ls
mv.log.1.gz mv.log.2.gz mv.log.3.gz mv.log.4.gz mv.log.5.gz
Bonne chance
mamiemando
Messages postés
33081
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
27 avril 2024
7 749
Modifié le 17 août 2021 à 13:59
Modifié le 17 août 2021 à 13:59
Bonjour,
Ma commande fonctionne parfaitement...
Ma remarque était plus que par rapport à la question de départ, la commande que tu proposes dans ton premier message ignore les fichiers
Ceci dit, cela me donne une idée beaucoup plus simple qu'utiliser une expression rationnelle :-)
Plutôt que lister les fichiers et filtrer ceux qui t'intéressent, tu peux générer à la volée le nom des fichiers. L'avantage, c'est que tu pourras facilement spécifier l'index de départ et de fin des fichiers à supprimer. Pour cela on adapte la commande que j'ai utilisée dans mon précédent message :
Pour supprimer les fichiers
Exemple :
Bonne chance
Ma commande fonctionne parfaitement...
Ma remarque était plus que par rapport à la question de départ, la commande que tu proposes dans ton premier message ignore les fichiers
mv.log.6.gzà
mv.log.10.gz.
Ceci dit, cela me donne une idée beaucoup plus simple qu'utiliser une expression rationnelle :-)
Plutôt que lister les fichiers et filtrer ceux qui t'intéressent, tu peux générer à la volée le nom des fichiers. L'avantage, c'est que tu pourras facilement spécifier l'index de départ et de fin des fichiers à supprimer. Pour cela on adapte la commande que j'ai utilisée dans mon précédent message :
Pour supprimer les fichiers
mv.log.6.gzà
mv.log.11.gzinclus, il suffit de lancer :
for i in $(seq 6 11); do rm mv.log.$i.gz; done
Exemple :
(mando@silk) (~/toto) $ ls
mv.log.10.gz mv.log.12.gz mv.log.2.gz mv.log.4.gz mv.log.6.gz mv.log.8.gz
mv.log.11.gz mv.log.1.gz mv.log.3.gz mv.log.5.gz mv.log.7.gz mv.log.9.gz
(mando@silk) (~/toto) $ for i in $(seq 6 11); do rm mv.log.$i.gz; done
(mando@silk) (~/toto) $ ls
mv.log.12.gz mv.log.1.gz mv.log.2.gz mv.log.3.gz mv.log.4.gz mv.log.5.gz
Bonne chance
pcsystemd
Messages postés
691
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
15 janvier 2024
22
16 août 2021 à 16:14
16 août 2021 à 16:14
Merci
Ma commande fonctionne parfaitement mais c'etait un exemple il faudra bien sur ajouter des
Merci je vais étudier tes autres commandes.
Ma commande fonctionne parfaitement mais c'etait un exemple il faudra bien sur ajouter des
-o -name 'mv.log.14?* -o -name 'mv.log.15?*etc.. pour chaque fichier a supprimer ce qui je te l'accorde n'est pas optimum et c'est la raison de ma question.
Merci je vais étudier tes autres commandes.