Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/09/2012, à 19:25

Hizoka

[resolu] aide pour une commande find

Bonsoir,

J'ai un dossier contenant les dossiers et fichiers suivants :
- dossier : debian
- dossier : usr
- dossier : etc
- dossier : opt
- fichier : lpsm.cfg

Je cherche une commande find me permettant de rechercher les fichiers :

-type f

d'exclure les fichier pyc et le fichier lpsm.cfg

! -iname "*.pyc|lpsm.cfg"

d'exclure les fichiers de sauvegarde (type fichier.txt~)

! -regex ".*~$"

d'exclure les fichiers vides

! -empty

mais je n'arrive pas à lui dire de ne pas prendre en compte le dossier debian.

et est-il possible de rassembler mon iname et mon regex ?

Voila, si quelqu'un a une idée qui resterait dans la commande find... (oui via un pipe je peux le faire)

merci à vous !

Dernière modification par Hizoka (Le 23/09/2012, à 18:24)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#2 Le 22/09/2012, à 20:30

Haleth

Re : [resolu] aide pour une commande find

! -regex ".*[/]\debian[/]?.*"

Ou un truc du genre


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#3 Le 22/09/2012, à 20:35

Beta Pictoris

Re : [resolu] aide pour une commande find

Et retirer "-type f" de ta commande.

Dernière modification par Beta Pictoris (Le 22/09/2012, à 20:35)

Hors ligne

#4 Le 22/09/2012, à 22:40

Hizoka

Re : [resolu] aide pour une commande find

Beta Pictoris, si je retire ca, il me renverra également les dossiers vides...

Haleth => merci smile

et je cherche également si possible à faire ceci avec ma commande (printf ?) :

dossier de la recherche : /home/hizo/test/

actuellement find me renvoie : /home/hizo/test/usr/...    /home/hizo/test/etc/...

et j'aimerais : usr/...   etc/...

actuellement je passe par un pipe...

en sachant que /home/hizo/test/ est une variable (${var})

merci à vous smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#5 Le 22/09/2012, à 23:35

Beta Pictoris

Re : [resolu] aide pour une commande find

var=/home/hizo/test/ find $var | sed "s#$var##"

Dernière modification par Beta Pictoris (Le 22/09/2012, à 23:36)

Hors ligne

#6 Le 23/09/2012, à 00:47

Hizoka

Re : [resolu] aide pour une commande find

oui c'est ce que je fais deja smile

mais je voulais voir si y avait moyen de se passer du pipe.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#7 Le 23/09/2012, à 09:25

Postmortem

Re : [resolu] aide pour une commande find

Salut,
En se passant du pipe :

find "$var" -exec bash -c "printf '%s\n' \"\${0#$var}\"" {} \;

Par contre, le temps de traitement doit être bien plus long !

Edit :
Puis pour exclure le répertoire debian, utiliser -prune, ça évite à find de descendre dans ce répertoire pour exclure tous les fichiers/répertoires qu'il contient un par un.

$ ls -lR /tmp/test
/tmp/test:
total 20
drwxrwxr-x 2 xxxxxx xxxxxx 4096 sept. 23 09:47 debian
drwxrwxr-x 2 xxxxxx xxxxxx 4096 sept. 23 09:47 etc
-rw-rw-r-- 1 xxxxxx xxxxxx    7 sept. 23 10:05 lpsm.cfg
drwxrwxr-x 2 xxxxxx xxxxxx 4096 sept. 23 09:47 opt
drwxrwxr-x 2 xxxxxx xxxxxx 4096 sept. 23 09:47 usr

/tmp/test/debian:
total 4
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic1.pyc
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:46 fic1.txt
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic1.txt~
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic 2.pyc
-rw-rw-r-- 1 xxxxxx xxxxxx 2 sept. 23 09:53 fic 2.txt
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic 2.txt~

/tmp/test/etc:
total 4
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic1.pyc
-rw-rw-r-- 1 xxxxxx xxxxxx 2 sept. 23 09:53 fic1.txt
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic1.txt~
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic 2.pyc
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:46 fic 2.txt
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic 2.txt~

/tmp/test/opt:
total 8
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic1.pyc
-rw-rw-r-- 1 xxxxxx xxxxxx 2 sept. 23 09:53 fic1.txt
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic1.txt~
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic 2.pyc
-rw-rw-r-- 1 xxxxxx xxxxxx 2 sept. 23 09:53 fic 2.txt
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic 2.txt~

/tmp/test/usr:
total 4
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic1.pyc
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:46 fic1.txt
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic1.txt~
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic 2.pyc
-rw-rw-r-- 1 xxxxxx xxxxxx 2 sept. 23 09:53 fic 2.txt
-rw-rw-r-- 1 xxxxxx xxxxxx 0 sept. 23 09:47 fic 2.txt~
$ var=/tmp/test/
$ find "$var" -regex "${var}debian" -type d -prune -o ! -regex '.*\.pyc\|.*~\|.*/lpsm\.cfg' -type f ! -empty -exec bash -c "printf '%s\n' \"\${0#$var}\"" {} \;
usr/fic 2.txt
etc/fic1.txt
opt/fic 2.txt
opt/fic1.txt

Dernière modification par Postmortem (Le 23/09/2012, à 11:26)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#8 Le 23/09/2012, à 10:24

Haleth

Re : [resolu] aide pour une commande find

3% [alex:~]find aptitude-0.6.6/
aptitude-0.6.6/
aptitude-0.6.6/m4
aptitude-0.6.6/m4/Makefile.am
aptitude-0.6.6/m4/ChangeLog
aptitude-0.6.6/m4/Makefile.in
aptitude-0.6.6/check_boost.sh
aptitude-0.6.6/section-descriptions
aptitude-0.6.6/empty
aptitude-0.6.6/acinclude.m4
aptitude-0.6.6/aclocal.m4
aptitude-0.6.6/file.pyc
aptitude-0.6.6/debian
aptitude-0.6.6/debian/rules
aptitude-0.6.6/debian/README.Debian
aptitude-0.6.6/debian/docs
aptitude-0.6.6/debian/source
aptitude-0.6.6/debian/source/format
aptitude-0.6.6/debian/changelog
aptitude-0.6.6/debian/compat
aptitude-0.6.6/debian/NEWS
aptitude-0.6.6/debian/patches
aptitude-0.6.6/debian/patches/11_ubuntu_uses_sudo
aptitude-0.6.6/debian/patches/no-google-mock
aptitude-0.6.6/debian/patches/03_branding
aptitude-0.6.6/debian/patches/04_changelog
aptitude-0.6.6/debian/patches/12_point_manpage_to_doc_package
aptitude-0.6.6/debian/patches/series
aptitude-0.6.6/debian/patches/14_html2text_preferred
aptitude-0.6.6/debian/postrm
aptitude-0.6.6/debian/copyright
aptitude-0.6.6/debian/gbp.conf
aptitude-0.6.6/debian/05aptitude
aptitude-0.6.6/debian/control

C'est pas ce que tu cherches ?

3% [alex:~]ls aptitude-0.6.6/
acinclude.m4  check_boost.sh  empty     m4
aclocal.m4    debian          file.pyc  section-descriptions

2% [alex:~]find aptitude-0.6.6/ -type f ! -iname "lpsm.cfg" ! -regex ".*~$" ! -empty ! -regex ".*[/]\debian[/]?.*" ! -regex ".*.pyc"
aptitude-0.6.6/m4/Makefile.am
aptitude-0.6.6/m4/ChangeLog
aptitude-0.6.6/m4/Makefile.in
aptitude-0.6.6/check_boost.sh
aptitude-0.6.6/section-descriptions
aptitude-0.6.6/acinclude.m4
aptitude-0.6.6/aclocal.m4

Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#9 Le 23/09/2012, à 11:01

Postmortem

Re : [resolu] aide pour une commande find

@Haleth
Ta commande exclu les fichiers debian*, même s'ils ne sont pas dans le répertoire debian.
Elle exclu aussi tous les sous-répertoires debian (et leur contenu) ; de ce que j'ai compris de la demande, Hizoka ne veut exclure que le répertoire debian se trouvant juste sous $var.

Edit :
On pourrait faire comme ça aussi :

$ var=/tmp/test/
$ cd "$var" && find * -regex "debian" -type d -prune -o ! -regex '.*\.pyc\|.*~\|lpsm\.cfg' -type f ! -empty -print

Dernière modification par Postmortem (Le 23/09/2012, à 11:32)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#10 Le 23/09/2012, à 18:21

Hizoka

Re : [resolu] aide pour une commande find

Postmortem, tu as bien compris, juste le 1er dossier debian smile

je prefere eviter le cd j'aime travailler avec les adresses completes.

Si tu dis que ca sera moins rapide, ok, je reste avec mon sed smile

merci pour le prune.

merci à vous tous !


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#11 Le 25/09/2012, à 18:46

Hizoka

Re : [resolu] aide pour une commande find

Postmortem => en fait j'avais pas vu mais y 'a un truc qui va pas avec ta commande :

...
/home/hizoka/Scripts_et_logiciels/scripts/lpsm/usr/share/lpsm/go_lpsm.sh
/home/hizoka/Scripts_et_logiciels/scripts/lpsm/usr/share/lpsm/lpsm.png
/home/hizoka/Scripts_et_logiciels/scripts/lpsm/usr/share/lpsm/manpagecreator/manpagecreator.py
/home/hizoka/Scripts_et_logiciels/scripts/lpsm/usr/share/lpsm/manpagecreator/manpagecreator.glade
/home/hizoka/Scripts_et_logiciels/scripts/lpsm/debian

il me donne le dossier debian aussi, y a pas moyen qu'il ne le renvoie pas ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#12 Le 25/09/2012, à 22:57

Postmortem

Re : [resolu] aide pour une commande find

C'est parce que, lorsque l'on ne met pas d'action autre que -prune dans un find, il rajoute automatiquement -print. Pour etre clair :

find /chemin -type d -name "rep_exclu" -prune -o -type f

sera exécutée comme si tu avais écrit :

find /chemin \( -type d -name "rep_exclu" -prune -o -type f \) -print

Et donc, rep_exclu est affiché mais pas son contenu.
Pour ne pas avoir rep_exclu, il faut faire :

find /chemin -type d -name "rep_exclu" -prune -o -type f -print

Ainsi, seul les fichiers seront affichés (sauf ceux étant dans rep_exclu)
A la place de -print, on peut mettre n'importe quelle action (-delete, -exec...) qui ne sera exécutée que sur les fichiers qui ne sont pas dans rep_exclu.
J'avais fait une petite explication sur le fonctionnement de find au post #10 ici


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne