Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[find] besoin d'aide pour cde de recherche complexe (résolu)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
gglaboussole
l33t
l33t


Joined: 17 May 2005
Posts: 641
Location: Monbalen (47),France

PostPosted: Wed Oct 15, 2008 5:59 pm    Post subject: [find] besoin d'aide pour cde de recherche complexe (résolu) Reply with quote

Bonsoir,

Malgré la lecture des pages man de "find" je n'arrive pas à lui faire afficher ce que je veux...

J'ai un repertoire /home/jerome/Music assez conséquent et j'aimerai pouvoir faire afficher la liste des fichiers qui ne sont ni des .mp3, ni des .ogg, ni des .flac et qui y sont présent...

Si toutefois il existe un autre utilitaire de recherche plus intuitif je suis preneur :wink:

Merci de votre aide
_________________
On m'a dit que la terre tourne, alors j'attends que ma maison passe par ici...


Last edited by gglaboussole on Wed Oct 15, 2008 9:51 pm; edited 1 time in total
Back to top
View user's profile Send private message
Bapt
Veteran
Veteran


Joined: 14 Apr 2003
Posts: 1152
Location: Paris

PostPosted: Wed Oct 15, 2008 6:30 pm    Post subject: Reply with quote

en zsh si tu active l'option extendedglob rien de plus simple :
Code:

print -l /home/jerome/Music/**/*~*.(mp3|ogg|flac)(.)


j'utilise print -l au lieu de ls car le nombre d'arguments risque d'être trop important pour la commande ls
Back to top
View user's profile Send private message
gglaboussole
l33t
l33t


Joined: 17 May 2005
Posts: 641
Location: Monbalen (47),France

PostPosted: Wed Oct 15, 2008 6:49 pm    Post subject: Reply with quote

Merci de ta réponse Bapt mais malheureusement j'utilise bash :( ...
je trouve plein de truc sur google pour trouver des fichiers "qui sont" mais rien "qui sont pas...." ( euh je suis clair là :lol: ) alors j'essaie avec le privatif "!" mais marche poa..
_________________
On m'a dit que la terre tourne, alors j'attends que ma maison passe par ici...
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3772
Location: Wellington, Aotearoa

PostPosted: Wed Oct 15, 2008 7:56 pm    Post subject: Reply with quote

gglaboussole wrote:
Merci de ta réponse Bapt mais malheureusement j'utilise bash :( ...

SI ça te deprimes tant, pourquoi ne pas changer ? :D Enfin ça te changerai la vie pour ce genre de choses en tout cas.
Sinon avec find tu peux faire ça :
Code:
% find /home/jerome/Music -not -iname "*.mp3" -not -iname "*.ogg" -not -iname "*.flac"

Mais c'est plus chiant et plus lent. :)
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Wed Oct 15, 2008 9:21 pm    Post subject: Reply with quote

geekounet wrote:
Mais c'est plus chiant et plus lent. :)

plus lent à taper? ou alors tu as des chiffres pour appuyer tes propos?
_________________
The End of the Internet!
Back to top
View user's profile Send private message
gglaboussole
l33t
l33t


Joined: 17 May 2005
Posts: 641
Location: Monbalen (47),France

PostPosted: Wed Oct 15, 2008 9:50 pm    Post subject: Reply with quote

Aie... aurais je malgré moi induit un soupçon de troll ?
en tout cas merci geekounet pour ta soluce c'est exactement ce que je cherchais, et j'ai honte tellement c'est tout con en fait...me suis battu avec des "!" des "*" et des "()" mais le "not" l'avais pas intégré !
En revanche je plussoie truc c'est très rapide (mais forcémént j'peux pas comparer avec zsh :lol: )
merci encore
_________________
On m'a dit que la terre tourne, alors j'attends que ma maison passe par ici...
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3772
Location: Wellington, Aotearoa

PostPosted: Wed Oct 15, 2008 11:12 pm    Post subject: Reply with quote

truc wrote:
geekounet wrote:
Mais c'est plus chiant et plus lent. :)

plus lent à taper? ou alors tu as des chiffres pour appuyer tes propos?

Bah d'un coté t'as un shell qui va utiliser seulement ses fonctions internes (rien à charger donc) et qui va faire la recherche en ne testant qu'une seule regexp pour chaque fichier, et de l'autre t'appelle un soft externe (temps de chargement tout ça...) qui va faire la recherche en appliquant 3 tests par fichier, donc logiquement... :)
Et puis plus lent à taper oui, et moins beau. :P
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Thu Oct 16, 2008 5:51 am    Post subject: Reply with quote

geekounet wrote:
...


Pour moi ça n'est pas suffisant pour tirer des conclusions, car le truc externe à chargé en question est justement codé *exactement* pour cette utilisation, et pas pour autre chose.

De plus, l'expression simplifiée que tu as pour zsh, n'est pas magique non plus, faudra bien qu'il y ait des tests en tout genre, comme pour les '3 tests' par fichier dont tu parles.

Et en plus, avec le find que tu as donné, pas de regex. Or on sait que pour un même test, si on peut le faire sans regex, c'est plus efficace. Maintenant, pour 3 tests, effectivement je n'en sais rien.. Mais pour moi, c'est loin d'être évident!

(Mais rien ne nous aurait empecher de le faire avec une regex également, avec style :
Code:
find bla/ -type f -not -iregex '.*\.(mp3|ogg|flac)'

-pas testé-
)

L'OP va peut-être bien vouloir installer zsh, et faire toute une batterie de test pour nous? ;)

J'plaisante ;)

Bonne journée


[ EDIT ] Après pour des raisons similaires à celles qui t'ont pousser utiliser 'print -l' au lieu de 'ls', et selon ce qu'il est souhaité de faire par la suite, il est bon par la suite de faire un -print0 et de 'piper' le tout dans un 'xargs -0', c'est plus rapide, si beaucoup de fichier que de faire un -exec (cf manuel)
_________________
The End of the Internet!
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3772
Location: Wellington, Aotearoa

PostPosted: Thu Oct 16, 2008 6:30 am    Post subject: Reply with quote

Bon si tu veux des chiffres :
Code:
[pierre@Korriban ~] % time ls -l ~/Music/**/*~*.(mp3|ogg|flac)(.)
ls --color=auto -l ~/Music/**/*~*.(mp3|ogg|flac)(.)  0.06s user 0.14s system 97% cpu 0.209 total
[pierre@Korriban ~] % time find ~/Music/ -not -iname "*.mp3" -not -iname "*.ogg" -not -iname "*.flac"
find ~/Music/ -not -iname "*.mp3" -not -iname "*.ogg" -not -iname "*.flac"  0.06s user 0.03s system 20% cpu 0.451 total

ls plutôt que print sinon il me fait pas le time, donc du coup ça handicape même la méthode zsh. Et j'ai lancé les 2 plusieurs fois, en prenant le meilleur temps de chaque. :P
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Thu Oct 16, 2008 7:21 am    Post subject: Reply with quote

ok, ça commence à devenir interessant :p

T'as vidé le cache de tes disques entres chaque essai? (un echo 3 > /proc/sys/machin.. si je n'mabuse)
Quelle est la taille de ce repertoire histoire d'avoir un repère?

J'nai pas de particulièrement gros repertoire au boulot, donc je ne peux pas vraiment contribuer (fin, je monte bien un gros partage samba, mais bon c'est pas idéal...)

Tu pourrais essayer avec la regex pour find aussi, histoire de voir?

Mais effectivement, les résultats sont un peu faussé si tu ne peux pas le faire qu'en zsh, avec le print -l. Peut-être devrait-on punir le find, en lui collant un -exec ls -l '{}' +, ou plus juste peut-être un -print0 | xargs -0 ls -l :?:

:)


EDIT: Bon, et donc, pour les résultats qu'on a pour l'instant, c'est bien le 0.06 le temps qu'il faut regarder ou le dernier?
_________________
The End of the Internet!
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum