Soit un ls -l qui me renvoie les informations suivantes :
-rw------- 1 normal normal 306626 2010-02-27 11:41
grisbi_060_20100227T114139.gsb
-rw------- 1 normal normal 308630 2010-02-27 11:55
grisbi_060_20100227T115547.gsb
-rw------- 1 normal normal 306750 2010-02-28 08:55
grisbi_060_20100228T085548.gsb
-rw------- 1 normal normal 308745 2010-02-28 12:47
grisbi_060_20100228T124719.gsb
-rw------- 1 normal normal 306888 2010-03-02 04:52
grisbi_060_20100302T045227.gsb
-rw------- 1 normal normal 308915 2010-03-03 19:00
grisbi_060_20100303T190043.gsb
-rw------- 1 normal normal 307016 2010-03-05 07:35
grisbi_060_20100305T073532.gsb
-rw------- 1 normal normal 309195 2010-03-05 18:01
grisbi_060_20100305T180111.gsb
-rw------- 1 normal normal 307539 2010-03-06 09:23
grisbi_060_20100306T092340.gsb
-rw------- 1 normal normal 309493 2010-03-09 06:31
grisbi_060_20100309T063100.gsb
-rw------- 1 normal normal 307389 2010-03-11 06:14
grisbi_060_20100311T061409.gsb
etc.
Tous ces fichiers ont, dans une partie de leur nom, un motif de la forme
AAAAMMJJ. Par exemple, pour le dernier, j'ai 20100311
Je sais lister les fichiers qui ont ce motif avec :
ls -l *20100311*
Comme pourrais-je faire pour n'avoir pas ce motif en sortie de ls ? En
sous produit, j'aimerais pouvoir supprimer avec rm les fichiers qui
n'ont pas ce motif.
Je vous remercie et vous souhaite une bonne journée,
--
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es
Comme pourrais-je faire pour n'avoir pas ce motif en sortie de ls ?
Avec zsh : ls *~*20100311*
sous produit, j'aimerais pouvoir supprimer avec rm les fichiers qui n'ont pas ce motif.
rm à la place de ls.
Luc.Habert.00__arjf
Dominique :
Je sais lister les fichiers qui ont ce motif avec : ls -l *20100311*
Comme pourrais-je faire pour n'avoir pas ce motif en sortie de ls ? En sous produit, j'aimerais pouvoir supprimer avec rm les fichiers qui n'ont pas ce motif.
for f in * .[!.]* ..?*; do case $f in *20100311*) ;; *) rm -f "$f";; esac done
(par pédantisme, j'ai fait du pur sh, avec un « ! » pour la négation dans des crochets; avec zsh et sans doute bash, il faut mettre un « ^ » à la place, car ils utilisent le « ! » pour extraire une commande de l'historique.)
Je sais lister les fichiers qui ont ce motif avec :
ls -l *20100311*
Comme pourrais-je faire pour n'avoir pas ce motif en sortie de ls ? En
sous produit, j'aimerais pouvoir supprimer avec rm les fichiers qui
n'ont pas ce motif.
for f in * .[!.]* ..?*; do
case $f in
*20100311*) ;;
*) rm -f "$f";;
esac
done
(par pédantisme, j'ai fait du pur sh, avec un « ! » pour la négation dans
des crochets; avec zsh et sans doute bash, il faut mettre un « ^ » à la
place, car ils utilisent le « ! » pour extraire une commande de
l'historique.)
Je sais lister les fichiers qui ont ce motif avec : ls -l *20100311*
Comme pourrais-je faire pour n'avoir pas ce motif en sortie de ls ? En sous produit, j'aimerais pouvoir supprimer avec rm les fichiers qui n'ont pas ce motif.
for f in * .[!.]* ..?*; do case $f in *20100311*) ;; *) rm -f "$f";; esac done
(par pédantisme, j'ai fait du pur sh, avec un « ! » pour la négation dans des crochets; avec zsh et sans doute bash, il faut mettre un « ^ » à la place, car ils utilisent le « ! » pour extraire une commande de l'historique.)
Comme pourrais-je faire pour n'avoir pas ce motif en sortie de ls ?
Avec zsh : ls *~*20100311*
Bonjour et merci pour cette piste. Mais je n'ai pas zsh. J'utilise bash « par défaut ».
existe-t-il donc une solution par expression régulière valide avec bash ?
Bon après-midi,
-- Dominique Courriel : dominique point sextant ate orange en France Esto quod es
Dominique
Le 14/03/2010 12:27, Luc Habert a écrit :
Dominique :
Je sais lister les fichiers qui ont ce motif avec : ls -l *20100311*
Comme pourrais-je faire pour n'avoir pas ce motif en sortie de ls ? En sous produit, j'aimerais pouvoir supprimer avec rm les fichiers qui n'ont pas ce motif.
for f in * .[!.]* ..?*; do case $f in *20100311*) ;; *) rm -f "$f";; esac done
Merci pour ce script. Pourrais-tu m'expliquer ton motif .[!.]* ..?* ?
Bon après-midi,
-- Dominique Courriel : dominique point sextant ate orange en France Esto quod es
Le 14/03/2010 12:27, Luc Habert a écrit :
Dominique :
Je sais lister les fichiers qui ont ce motif avec :
ls -l *20100311*
Comme pourrais-je faire pour n'avoir pas ce motif en sortie de ls ? En
sous produit, j'aimerais pouvoir supprimer avec rm les fichiers qui
n'ont pas ce motif.
for f in * .[!.]* ..?*; do
case $f in
*20100311*) ;;
*) rm -f "$f";;
esac
done
Merci pour ce script. Pourrais-tu m'expliquer ton motif .[!.]* ..?* ?
Bon après-midi,
--
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es
Je sais lister les fichiers qui ont ce motif avec : ls -l *20100311*
Comme pourrais-je faire pour n'avoir pas ce motif en sortie de ls ? En sous produit, j'aimerais pouvoir supprimer avec rm les fichiers qui n'ont pas ce motif.
for f in * .[!.]* ..?*; do case $f in *20100311*) ;; *) rm -f "$f";; esac done
Merci pour ce script. Pourrais-tu m'expliquer ton motif .[!.]* ..?* ?
Bon après-midi,
-- Dominique Courriel : dominique point sextant ate orange en France Esto quod es
Dominique
Le 14/03/2010 13:07, Nicolas George a écrit :
Emmanuel Florac wrote in message <4b9cccb9$0$24072$:
Ne jamais parser la sortie de ls.
Pourquoi ?
Bon après-midi,
-- Dominique Courriel : dominique point sextant ate orange en France Esto quod es
Le 14/03/2010 13:07, Nicolas George a écrit :
Emmanuel Florac wrote in message
<4b9cccb9$0$24072$426a74cc@news.free.fr>:
Ne jamais parser la sortie de ls.
Pourquoi ?
Bon après-midi,
--
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es
Emmanuel Florac wrote in message <4b9cccb9$0$24072$:
Ne jamais parser la sortie de ls.
Pourquoi ?
Bon après-midi,
-- Dominique Courriel : dominique point sextant ate orange en France Esto quod es
Nicolas George
Dominique wrote in message <4b9cd587$0$15857$:
Pourquoi ?
Parce que ce n'est pas prévu pour, et donc qu'on a très peu de garanties quant à la présentation exacte.
Plus pragmatiquement, parce que le comportement vis-à-vis de caractères inhabituels dans les noms de fichiers n'est pas utilisable de manière fiable en script.
Dominique wrote in message
<4b9cd587$0$15857$ba4acef3@reader.news.orange.fr>:
Pourquoi ?
Parce que ce n'est pas prévu pour, et donc qu'on a très peu de garanties
quant à la présentation exacte.
Plus pragmatiquement, parce que le comportement vis-à-vis de caractères
inhabituels dans les noms de fichiers n'est pas utilisable de manière fiable
en script.
Parce que ce n'est pas prévu pour, et donc qu'on a très peu de garanties quant à la présentation exacte.
Plus pragmatiquement, parce que le comportement vis-à-vis de caractères inhabituels dans les noms de fichiers n'est pas utilisable de manière fiable en script.
Fabien LE LEZ
On 14 Mar 2010 12:07:18 GMT, Nicolas George <nicolas$:
ls -l | grep -v "20100311"
Ne jamais parser la sortie de ls.
Quand il s'agit d'afficher à l'écran, ça ne pose pas de problème. S'il s'agit de passer le résultat à autre chose (surtout "rm"), je suis d'accord. J'imagine que "find" est plus adéquat ?
Au fait, quand on a des espaces dans les noms de fichiers, et qu'on veut utiliser le couple find/xargs, on écrit find ... -print0 | xargs -0 ...
Mais... y a-t-il un moyen de mettre grep entre les deux, pour filtrer ?
On 14 Mar 2010 12:07:18 GMT, Nicolas George
<nicolas$george@salle-s.org>:
ls -l | grep -v "20100311"
Ne jamais parser la sortie de ls.
Quand il s'agit d'afficher à l'écran, ça ne pose pas de problème.
S'il s'agit de passer le résultat à autre chose (surtout "rm"), je
suis d'accord. J'imagine que "find" est plus adéquat ?
Au fait, quand on a des espaces dans les noms de fichiers, et qu'on
veut utiliser le couple find/xargs, on écrit
find ... -print0 | xargs -0 ...
Mais... y a-t-il un moyen de mettre grep entre les deux, pour
filtrer ?
On 14 Mar 2010 12:07:18 GMT, Nicolas George <nicolas$:
ls -l | grep -v "20100311"
Ne jamais parser la sortie de ls.
Quand il s'agit d'afficher à l'écran, ça ne pose pas de problème. S'il s'agit de passer le résultat à autre chose (surtout "rm"), je suis d'accord. J'imagine que "find" est plus adéquat ?
Au fait, quand on a des espaces dans les noms de fichiers, et qu'on veut utiliser le couple find/xargs, on écrit find ... -print0 | xargs -0 ...
Mais... y a-t-il un moyen de mettre grep entre les deux, pour filtrer ?