#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
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
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
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
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
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