Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/10/2011, 16h30   #1
Membre habitué
 
Homme
Ingénieur modélisation aérodynamique
Inscription : juillet 2009
Messages : 95
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur modélisation aérodynamique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2009
Messages : 95
Points : 114
Points : 114
Par défaut Comment désigner le complémentaire de *.truc

Bonjour,

Je cherche à supprimer dans un dossier tous les éléments qui n'ont pas une certaine extension.
Par exemple, peut-on désigner "tous les fichiers qui ne sont PAS dans *.tar" ?

Merci
bobbyboy est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/10/2011, 16h45   #2
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Avec find et la négation (!) sur la recherche de son nom sous forme de regex (*.tar) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$ ls -1
foo.sh*
tata.tar
tete.tar
titi.tar
toto.doc
toto.gif
toto.jpg
toto.png
toto.sh
toto.tar
toto.txt
toto.xls
tutu.tar

$ find . -type f ! -name "*.tar" -exec echo "rm -f {}" \;
rm -f ./toto.sh
rm -f ./toto.gif
rm -f ./toto.png
rm -f ./toto.xls
rm -f ./toto.doc
rm -f ./toto.jpg
rm -f ./toto.txt
rm -f ./foo.sh

$
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 07/10/2011, 10h08   #3
Membre habitué
 
Homme
Ingénieur modélisation aérodynamique
Inscription : juillet 2009
Messages : 95
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur modélisation aérodynamique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2009
Messages : 95
Points : 114
Points : 114
Merci
bobbyboy est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/10/2011, 12h59   #4
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
Cette syntaxe est peu connue, mais c'est standard et c'est bien pratique. De même que :
Code :
1
2
3
4
?(pattern-list)
*(pattern-list)
+(pattern-list)
@(pattern-list)
matafan est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 07/10/2011, 14h11   #5
Membre habitué
 
Homme
Ingénieur modélisation aérodynamique
Inscription : juillet 2009
Messages : 95
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur modélisation aérodynamique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2009
Messages : 95
Points : 114
Points : 114
Bonjour matafan,

La syntaxe que tu propose ne marche pas chez moi :
De même que les autres.

Je suis sous la distribution Red Hat de Linux , shell bash.

---------------------------------------------------------

Petite correction :

si je passe en ksh, la syntaxe est acceptée. Mais je n'aime pas ce shell. Y a-t-il un moyen de faire passer la syntaxe en bash ?
bobbyboy est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/10/2011, 15h22   #6
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
Quelle erreur as-tu ? Ca devrait marcher avec bash. D'ailleurs chez moi ça marche avec bash :
Code :
1
2
3
4
0)tmp $ ls
tata  tata.tar  toto  toto.tar
0)tmp $ echo !(*.tar)
tata toto
matafan est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 07/10/2011, 16h31   #7
Membre habitué
 
Homme
Ingénieur modélisation aérodynamique
Inscription : juillet 2009
Messages : 95
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur modélisation aérodynamique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2009
Messages : 95
Points : 114
Points : 114
Voici l'erreur renvoyée:
Code :
1
2
3
rm !(*.tar)
bash: !: event not found
bobbyboy est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/10/2011, 17h40   #8
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Il faut que l'option "extglob" soit activée shopt -p | grep extglog pour le savoir...

Extrait du man bash :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Si l'option extglob du shell option est activée par la commande shopt plusieurs opérateurs de correspondance étendue sont reconnus. 
Dans la description suivante, une liste-motif est une liste d'un ou plusieurs motifs séparés par des |. 
Les motifs composés sont formés en utilisant un ou plusieurs sous-motifs comme suit :

?(liste-motif)
    Correspond à zéro ou une occurrence des motifs indiqués 
*(liste-motif)
    Correspond à zéro ou plusieurs occurrences des motifs indiqués 
+(liste-motif)
    Correspond à une ou plusieurs occurrences des motifs indiqués 
@(liste-motif)
    Correspond à une occurrence exactement des motifs indiqués 
!(liste-motif)
    Correspond à tout sauf les motifs indiqués
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/10/2011, 14h24   #9
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 538
Points : 7 754
Points : 7 754
Citation:
Envoyé par matafan Voir le message
Cette syntaxe est peu connue, mais c'est standard et c'est bien pratique. De même que :
Code :
1
2
3
4
?(pattern-list)
*(pattern-list)
+(pattern-list)
@(pattern-list)

juste une précision : ça dépand des shell
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 10h13   #10
Membre habitué
 
Homme
Ingénieur modélisation aérodynamique
Inscription : juillet 2009
Messages : 95
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur modélisation aérodynamique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2009
Messages : 95
Points : 114
Points : 114
Bonjour,

Voici le retour de la commande :

Code :
1
2
3
> shopt -p | grep extglog
shopt -u extglob
Je ne suis vraiment pas un expert en shell, donc je ne sais pas trop ce que ça veut dire. L'option "extglob" est-elle activée ? Si oui, pourquoi la syntaxe ne marche toujours pas, si non, comment faire pour l'activer ?

Merci
bobbyboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 10h55   #11
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Le "-u" indique que l'option n'est pas activée. Tapes shopt -s extglob pour l'activer
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/10/2011, 11h40   #12
Membre habitué
 
Homme
Ingénieur modélisation aérodynamique
Inscription : juillet 2009
Messages : 95
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur modélisation aérodynamique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2009
Messages : 95
Points : 114
Points : 114
Merci à tous,
ca marche nikel
bobbyboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h03.


 
 
 
 
Partenaires

Hébergement Web