Salut,
Je me rends bien compte de la betise de la question mais je galere...
je veux supprimer les fichiers png d'un répertoire sauf le 5.png sachant que les fichiers vont de 0.png jusqu'à n.png.
un ptit coup de find à la rescousse : tigrou@Lorien:~/tmp/shell$ for i in $(seq 1 15) ; do touch $i.png ; done
tigrou@Lorien:~/tmp/shell$ ls
10.png 12.png 14.png 1.png 3.png 5.png 7.png 9.png
11.png 13.png 15.png 2.png 4.png 6.png 8.png
tigrou@Lorien:~/tmp/shell$ rm `find . -name '*.png' -a -not -name 5.png -type f`
Tout dépend de la limite maximum de n. Si c'est neuf, pas de problème ça tient sur un seul caractère. Si c'est au dessus, tu vas avoir des problèmes car le nombre de caractères est variable. Bon sous bash, tu peux essayer ceci :
$ for i in *.png ; [ $i == 5.png ] || rm -f $i ; done
Cela devrait épargner ton fichier 5.png, et fonctionner pour n'importe quel autre motif.
Je me rend bien compte de la betise de la réponse mais... s'il n'y a qu'un seul fichier à NE PAS effacer, pourquoi ne le déplace-tu pas en dehors du dossier en question le temps de faire un rm sur les autres fichiers ?
# quel shell exactement ? , les globings/wildcards ne sont pas des regexp
Posté par free2.org . Évalué à 3.
parce que sous bash ça marche
les globings/wildcards des shells ne sont pas des regexp (expression regulieres/rationelles) et peuvent dépendre de chaque shell
sinon évite le -f pour faire des tests :)
je te conseille plutot d'utiliser la commande echo pour faire ces tests
example sous bash:
$ ls
1.png 2.png 3.png
$ echo [!1].png
2.png 3.png
$ rm [!1].png
$ ls
1.png
[^] # Re: quel shell exactement ? , les globings/wildcards ne sont pas des reg
Posté par arnobidul . Évalué à 1.
[^] # Re: quel shell exactement ? , les globings/wildcards ne sont pas des reg
Posté par Damien Pobel (site web personnel) . Évalué à 4.
tigrou@Lorien:~/tmp/shell$ for i in $(seq 1 15) ; do touch $i.png ; done
tigrou@Lorien:~/tmp/shell$ ls
10.png 12.png 14.png 1.png 3.png 5.png 7.png 9.png
11.png 13.png 15.png 2.png 4.png 6.png 8.png
tigrou@Lorien:~/tmp/shell$ rm `find . -name '*.png' -a -not -name 5.png -type f`
tigrou@Lorien:~/tmp/shell$ ls
5.png
https://damien.pobel.fr
[^] # Re: quel shell exactement ? , les globings/wildcards ne sont pas des reg
Posté par free2.org . Évalué à 3.
pour activer ce genre d'extended globs, il peut être nécessaire de taper avant:
shopt -s extglob
# n ?
Posté par Obsidian . Évalué à 2.
$ for i in *.png ; [ $i == 5.png ] || rm -f $i ; done
Cela devrait épargner ton fichier 5.png, et fonctionner pour n'importe quel autre motif.
# Je me rend bien compte de la betise de la réponse mais...
Posté par Glenn Y. R. (site web personnel, Mastodon) . Évalué à 2.
[^] # Re: Je me rend bien compte de la betise de la réponse mais...
Posté par free2.org . Évalué à 2.
mv 5.png nom_temporaire
rm *.png
mv nom_temporaire 5.png
mais le glob que j'ai donné plus haut évite des accès disques inutiles
# rm [^5].png
Posté par fimbles . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.