Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

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 17/09/2020, à 17:28

Hizoka

[Résolu] Commande find

Bonsoir à vous smile

J'ai besoin d'identifier des dossiers pour un projet pro qui semble très délicat...

Je me retrouve avec une arborescence de dossiers de type :

blabla/A/Arthur/...
blabla/A/Alan/...
blabla/blibli/A/Aramis/...
blublu/blibli/bloblo/B/Bertrand/...

Ce que je cherche à récupérer :

blabla/A/Arthur
blabla/A/Alan
blabla/blibli/A/Aramis
blublu/blibli/bloblo/B/Bertrand

Ce que j'ai fait :

find . -ipath "*/[a-z]"

Ce que j'obtiens :

blabla/A
blabla/blibli/A
blublu/blibli/bloblo/B

J'arrive au résultat voulu via :

while read Dossier
do
  find "${Dossier}" -mindepth 1 -maxdepth 1
done < <(find . -ipath "*/[a-z]")

Mais vu le nombre de dossier à traiter, si je peux éviter de faire des sous commandes, ça serait appréciable...

Je voulais un truc du genre :

find . -ipath "*/[a-z]/*/"

mais il ne veut pas que path se termine par /.


Une idée ?

Merci beaucoup.


PS : Je suis sous bash v4.4

Dernière modification par Hizoka (Le 18/09/2020, à 11:58)

Hors ligne

#2 Le 17/09/2020, à 17:40

Watael

Re : [Résolu] Commande find

salut,

shopt -s nullglob globstar
printf '%s\n' ./[A-z]/*/

?


Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 17/09/2020, à 17:49

Hizoka

Re : [Résolu] Commande find

Salut Watael, merci de ta proposition smile

printf '%s\n' ./[A-z]/*/

ne renvoie rien.

printf '%s\n' */[A-z]/*/
blabla/A/Arthur/...
blabla/A/Alan/...

Je n'ai pas les autres sous dossiers.

blabla/blibli/A/Aramis/...
blublu/blibli/bloblo/B/Bertrand/...

Hors ligne

#4 Le 17/09/2020, à 17:52

Watael

Re : [Résolu] Commande find

pfff, j'ai oublié l'essentiel : le globstar !

printf '%s\n' ./**/[A-z]/*/

quel co[uillo]n ! smile


Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 17/09/2020, à 17:54

Hizoka

Re : [Résolu] Commande find

J'avais testé entre temps smile

Mais non, ça ne change rien.

Hors ligne

#6 Le 17/09/2020, à 18:29

kamaris

Re : [Résolu] Commande find

Avec une regex ? Du genre

-iregex '.*/[a-z]/[^/]+'

peut-être en adaptant le type de regex.

EDIT : chez moi ça a l'air de marcher comme ça :

$ mkdir -p blabla/A/Arthur blabla/A/Alan/ blabla/blibli/A/Aramis/ blublu/blibli/bloblo/B/Bertrand/
$ find . -iregex '.*/[a-z]/[^/]+'
./blabla/A/Arthur
./blabla/A/Alan
./blabla/blibli/A/Aramis
./blublu/blibli/bloblo/B/Bertrand
$

Dernière modification par kamaris (Le 17/09/2020, à 18:55)

Hors ligne

#7 Le 17/09/2020, à 18:52

Watael

Re : [Résolu] Commande find

avec ce mkdir, le globstar fonctionne de manière identique. sad


Welcome to sHell. · eval is evil.

Hors ligne

#8 Le 17/09/2020, à 19:21

kamaris

Re : [Résolu] Commande find

Chez moi aussi.
Hizoka est en bash v4.4, mais je ne pense pas que ce soit ça…

Hors ligne

#9 Le 18/09/2020, à 11:58

Hizoka

Re : [Résolu] Commande find

Arf...

Je viens de voir que certains dossiers commencent par des points...

Je pense que c'est la différence entre les 2 commandes, find les affiches quand même et non pas printf.

Merci à tous les 2 smile

Hors ligne

#10 Le 18/09/2020, à 12:03

kamaris

Re : [Résolu] Commande find

Ah ça oui : dotglob smile

Dernière modification par kamaris (Le 18/09/2020, à 12:04)

Hors ligne