A voir également:
- Suppression fichiers via une regex.
- Forcer suppression fichier - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Suppression compte gmail - Guide
3 réponses
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
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