Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2011, 11h41   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 14
Points : 12
Points : 12
Par défaut Lister tous les sous-dossiers d'un répertoire

Bonjour,

Je suis débutant en bash et j'aimerai pourvoir lister tous les sous-dossier d'un dossier courant mais e ne veux récupérer que les les derniers dossiers
c'est à dire ceux dans lesquel il n'y a pas de répertoire

J'ai essayer
"find . -d -type d"

Il me retourne la liste de tous les répertoire mais je ne souhaite pas avoir les "./" devant les noms des répertoires et il me retourne tous les dossiers "intermédiaire" qui contiennent d'autre répertoire

J'ai un debut d episte avec le code suivant
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
#!/bin/bash
function afficheSousDossier
{
parent=$1
for inode in $(ls -R $parent)
   do
      if
	[ -d $inode ]
      then
         echo $inode
      fi
   done
 
}
 
 
for inode in $(ls -R)
   do
      if
	[ -d $inode ]
      then
         echo $inode
         afficheSousDossier $inode
      fi
   done
MAis le problème c'est que le "ls" me retourne "lenomdossier:" avec ce ":"à la fin que je n'arrive pas à enlever!

C'est super complexe et spécifique

Merci a ceux qui m'aideront

:p
ggava est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/06/2011, 12h58   #2
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Code :
1
2
 
find   -type d -links 2 | awk '{ gsub("^./","") ; print }'
becket est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 08/06/2011, 14h03   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 14
Points : 12
Points : 12
Merci

Sa marche nickel

Je l'ai tuné pour me fournir les dossiers ayant un nom particulier

Code :
find   -type d -links 2 | awk '{ gsub("^./","") ; print }'|grep -E "(.pkg)|(.sce)"
ggava est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 08/06/2011, 14h16   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

pas besoin de grep
find peut faire ce travail de sélection en fonction du nom, ou d'une regex.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 16/06/2011, 04h34   #5
Futur Membre du Club
 
Homme
Technicien réseau
Inscription : avril 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Nouvelle-Calédonie

Informations professionnelles :
Activité : Technicien réseau
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : avril 2011
Messages : 15
Points : 17
Points : 17
Par défaut merci si possible d'un complément d'explications

je lis cette réponse avec intérêt, mais je suis preneur d'une explication complémentaire
pourquoi l'option "-links 2" de find permet elle de faire exactement le filtre demandé ?
OU
est ce qu'il pourrait y avoir des dossiers ayant 2 liens qui ne répondraient pas au critère demandé ?
syncope_nc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h51.


 
 
 
 
Partenaires

Hébergement Web