tous les fichiers sauf...
Le
didier

Bonjour,
Soit un répertoire dans lequel sont des fichiers avec des
extensions diverses, comme .ga , .bu , .zo , .meuh et d'autres.
Il est facile d'agir sur tous les fichiers ayant une même extension,
par exemple « rm *.meuh ».
Mais agir sur tous les fichiers sauf les .meuh ?
ou sauf les .meuf et les .zo ?
avec une boucle for peut-être, mais je ne trouve pas
la syntaxe correcte.
Vous savez faire ?
syntaxiquement,
Didier.
Soit un répertoire dans lequel sont des fichiers avec des
extensions diverses, comme .ga , .bu , .zo , .meuh et d'autres.
Il est facile d'agir sur tous les fichiers ayant une même extension,
par exemple « rm *.meuh ».
Mais agir sur tous les fichiers sauf les .meuh ?
ou sauf les .meuf et les .zo ?
avec une boucle for peut-être, mais je ne trouve pas
la syntaxe correcte.
Vous savez faire ?
syntaxiquement,
Didier.
Avec zsh, « setopt extendedglob » et utiliser l'opérateur ~.
Et pour compléter sur les shells type sh (car parfois, on a pas
le choix de son shell) :
Avec ksh, liste tous les fichiers, sauf *.meuh et *.zo :
$ echo !(*.meuh|*.zo)
Cette syntaxe fonctionne avec bash avec éventuellement un
shopt extglob on
Par contre, je ne pense pas que l'on ait un équivalent pour
dash.
Enfin, pour csh, on peut utiliser ^ :
# echo ^*.meuh
Dans tous les cas, bien lire les docs des différents
shells.
A plus,
--
Bruno Ducrot
A quoi ca sert que Ducrot hisse des carcasses ?
le 06/02/2014 à 16:07, didier a écrit dans le message
for f in *
do echo "$f" | grep -q '.meuh$' || faire_quelquechose "$f"
done
for f in *
do echo "$f" | grep -Eq '.(meuh|zo)$' || ls -d "$f"
done
--
Benoit Izac
en bash:
cd repertoire
export GLOBIGNORE=*.meuh:*.zo
rm *
--
François Patte
Université Paris Descartes
Pas d'export, c'est un paramètre interne au shell.
(Heureusement ! Ce serait une faille certainement exploitable sinon.)
Re bonsoir,
et merci à tous.
Marrant de voir le nombre de solutions possibles
pour faire un même truc...
« rm !(*.meuh|*.zo) », la seule que j'ai eu le temps
d'essayer, fonctionne parfaitement sous bash, impec !
impeccablement,
Didier.