liste fichiers ".*"

Le
Hugolino
Bonjour,

Je souhaite récupérer la liste de tous les fichiers commençant par un
point, mais bien sûr *sans* le fichier "." qui désigne le répertoire
courant, tel que le renvoie

find . -maxdepth 1 -iname ".*"

Une /presque/ bonne solution est

find . -maxdepth 1 -iname ".[A-Za-z]*"

Mais pourquoi

find . -maxdepth 1 -iname ".+"

ne me renvoie-t-il rien ?

(et je vous passe tous mes essais infructueux)

Merci de votre aide.

--
> Dictature _éclairée_, s'il te plaît. :-)
Les leds du switch qui clignotent, c'est moyen comme éclairage.
Hugo (né il y a 1 446 937 777 secondes)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #21296811
Bonjour,

Le 01/03/2010 23:11, Hugolino a écrit :

Je souhaite récupérer la liste de tous les fichiers commençant par un
point, mais bien sûr *sans* le fichier "." qui désigne le répertoire
courant, tel que le renvoie

find . -maxdepth 1 -iname ".*"



Sauf erreur, le n'est pas nécessaire puisque le « . » n'est pas un
caractère spécial ici. Au passage, -name ferait aussi bien que -iname
puisque tu n'as pas mis de lettres ! ;-)

Une /presque/ bonne solution est

find . -maxdepth 1 -iname ".[A-Za-z]*"



Bon, en fait je crois que tu te trompes de regexp, tout simplement. Avec
-name ou -iname, ce qui suit est un "shell pattern" : « * » a donc la
signification du « .* » des regexps habituelles, et non celle de simple
multiplicateur. Et c'est « ? » qui a la signification du « . » des regexps.

Mais pourquoi

find . -maxdepth 1 -iname ".+"

ne me renvoie-t-il rien ?



Parce que ceci ne peut retourner qu'un nom de deux caractères, dont le
premier caractère est un point et le deuxième un plus. Si tu n'as pas de
fichier qui s'appelle « .+ » il ne renverra rien.

Merci de votre aide.



find . -maxdepth 1 -name ".?*"

--
Olivier Miakinen
Bruno Tréguier
Le #21296801
Le 01/03/2010 à 23:11, Hugolino a écrit :
Bonjour,



[...]

Mais pourquoi

find . -maxdepth 1 -iname ".+"

ne me renvoie-t-il rien ?

(et je vous passe tous mes essais infructueux)



Bonsoir,

La commande ne vous renvoie rien tout simplement parce que les options
"name" et "iname" de find n'attendent pas des expressions rationnelles
au sens strict, mais des chaînes de "filename pattern matching" comme le
shell en utilise (voir "pathname expansion" dans le man du shell que
vous utilisez, ou encore, faites un "man fnmatch"). La syntaxe est
légèrement différente (par exemple, 1 caractère "joker" est représenté
par "?" et non par ".") et assez limitée par rapport aux "regex"
proprement dites.

Vous avez essayé de regarder ce que les options "regex" et "iregex"
pouvaient faire pour vous (si votre version de find le supporte) ?

Un truc du genre:

find . -maxdepth 1 -regex "./..+"

pourrait fonctionner, non ? Il faut prévoir le "./" au début car la
sortie sera du style:

./.profile
./.dbus
./.gqview
./.java

etc.

Cordialement,

Bruno
Bruno Tréguier
Le #21296791
Le 01/03/2010 à 23:55, Olivier Miakinen a écrit :

find . -maxdepth 1 -name ".?*"



Bonsoir Olivier,

Pfff, beaucoup plus concis et utilisable que le mien effectivement.
Je vais me coucher, du coup, tiens ! :-D

Cordialement,

Bruno "pourquoi faire simple ?"
Hugolino
Le #21297091
Le 01-03-2010, Olivier Miakinen
Bonjour,

Le 01/03/2010 23:11, Hugolino a écrit :
>
> Bon, en fait je crois que tu te trompes de regexp, tout simplement. Avec
-name ou -iname, ce qui suit est un "shell pattern" : « * » a donc la
signification du « .* » des regexps habituelles, et non celle de simple
multiplicateur. Et c'est « ? » qui a la signification du « . » des regexps.



<jpp>
Ah ?!! OK, OK, OK...
</jpp>

>
find . -maxdepth 1 -name ".?*"



Parfait, merci à toi.


(Signature presque aléatoire)

--
Unix is user friendly. It's just selective about who his friends are.
-+- Tollef Fog Heen -+-
Hugo (né il y a 1 446 937 777 secondes)
Hugolino
Le #21297081
Le 01-03-2010, Bruno Tréguier
Le 01/03/2010 à 23:11, Hugolino a écrit :
> Mais pourquoi
>
> find . -maxdepth 1 -iname ".+"
>
> ne me renvoie-t-il rien ?
>
> (et je vous passe tous mes essais infructueux)

La commande ne vous renvoie rien tout simplement parce que les options
"name" et "iname" de find n'attendent pas des expressions rationnelles
au sens strict, mais des chaînes de "filename pattern matching" comme le
shell en utilise (voir "pathname expansion" dans le man du shell que
vous utilisez, ou encore, faites un "man fnmatch"). La syntaxe est
légèrement différente (par exemple, 1 caractère "joker" est représenté
par "?" et non par ".") et assez limitée par rapport aux "regex"
proprement dites.



OK, je tacherai de penser à cette subtile distinction la prochaine fois.

Vous avez essayé de regarder ce que les options "regex" et "iregex"
pouvaient faire pour vous (si votre version de find le supporte) ?

Un truc du genre:

find . -maxdepth 1 -regex "./..+"

pourrait fonctionner, non ? Il faut prévoir le "./" au début car la
sortie sera du style:



Oui, cette commande renvoie le même résultat que celle d'Olivier. (chez
moi en tout cas)

./.profile
./.dbus
./.gqview
./.java

etc.

Cordialement,



Tout pareil.

Bruno




--
catch(Exception putainFaitChier){
putainFaitChier.printStackTrace();
System.out.println("Bordel!");
}
xavier
Le #21322661
Hugolino
(Signature presque aléatoire)



Il y a longtemps qu'il a été prouvé que fortune avait une vie propre.

--
XAv
Disponible au 01/06/2010 - peut-être...peut-être pas...
Olivier Miakinen
Le #21325841
Le 05/03/2010 17:42, Xavier a écrit :

Il y a longtemps qu'il a été prouvé que fortune avait une vie propre.



Peut-être bien. Mais il ne faut pas prêter aux programmes des sentiments
humains : ils n'aiment pas ça.

--
Olivier Miakinen
Cyrille Lefevre
Le #21327771
Olivier Miakinen a écrit :
Le 05/03/2010 17:42, Xavier a écrit :
Il y a longtemps qu'il a été prouvé que fortune avait une vie pr opre.



Peut-être bien. Mais il ne faut pas prêter aux programmes des senti ments
humains : ils n'aiment pas ça.




Bonjour,

qui ça ? les programmes ou les humains ?

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
Publicité
Poster une réponse
Anonyme