obtenir l'arborescence d'un répertoire avec une mise en page

defre2937

Membre actif
15 Juin 2009
169
1
46
Complètement à l'Ouest....
Bonjour,

Je cherche à récupérer l'arborescence d'un répertoire (dossiers, sous-dossiers & fichiers) dans un documents texte mais avec une légère mise en page.

Je m'explique :
Je récupère sans problème la liste des dossiers, sous dossiers et fichiers d'un répertoire dans textedit (copier à partir du finder et coller dans text edit dans un fichier au format texte) mais j'obtient une liste comme celle ci :

Dossier1
Fichier1
Fichier2
sous-dossier 1
Fichier3
Fichier4
Dossier 2
Fichier5
Dossier 3
...

Or j'aimerai récupérer les infos avec une mise en page un peu plus lisible type :

Dossier1
Fichier1
Fichier2​
sous-dossier 1
Fichier3
Fichier4​
...
J'ai du rater quelque chose mais là je ne vois pas..
Merci d'avance de votre aide
Cordialement​
 
Bonjour,

Je complète ma question, en fait ce que je cherche à obtenir, c'est une présentation comme celle obtenue en mode liste avec le finder mais dans un fichier texte.

D'ailleurs savez vous que en mode liste lorsque l'on clique sur un dossier avec ctrl+alt enfoncée ça ouvre l'ensemble de l'arborescence des sous-dossiers? pratique....
 
Bonjour,

Je complète ma question, en fait ce que je cherche à obtenir, c'est une présentation comme celle obtenue en mode liste avec le finder mais dans un fichier texte.

D'ailleurs savez vous que en mode liste lorsque l'on clique sur un dossier avec ctrl+alt enfoncée ça ouvre l'ensemble de l'arborescence des sous-dossiers? pratique....

Bonjour

J'utilise un AS pour faire ce travail.

Exemple: (un fichier texte dans le dossier sélectionné)

Bloc de code:
Dossier --> Test (4 Fichiers et 4 Sous-Dossiers)

a1: 
   Capture d’écran 2014-01-30 à 12.37.15.png
   a2: 
      Capture d’écran 2014-01-30 à 12.37.48.png
      a3: 
         Capture d’écran 2014-01-30 à 12.38.25.png
dossier sans titre: 
   Capture d’écran 2014-01-30 à 12.38.47.png

Le caractère  pour bien voir les dossiers.

C'est ce que tu recherche?

Non testé avec le système 9.

@+
 
Dernière édition:
Bonjour ceslinstinct

Trop long pour donner le script ici?

Bonjour

˙1836 Caractères
˙˙297 Mots
˙˙˙46 Lignes

Ce n'est pas l'endroit pour poster un code.

Par un eMail c'est possible si la personne désire tester.

@+
 
Bonjour,
Et merci pour vos réponses.

ceslinstinct, je veux bien tester ton script si c'est possible car c'est en effet la présentation que je recherche.

Pascalformac : merci pour ton lien, je vais regarder ça, mais il va falloir que j'y passe un peu de temps car je ne suis pas très à l'aise avec le terminal

Dans tous les cas ça fait plaisir de voir que les gens sont prêt à partager leur savoir :)
 
Si tu veux pas t'emm*** longtemps le plus simple c'est de faire des copié collé successifs
en commencant par dossiers 1 er niveau
et de faire premiere mise en page genre paragraphes , et ou retraits pour futurs sous paragraphes (sous dossiers) etc

puis idem avec sous dossier
et sous dossiers des sous dossiers

c'est rapide
 
Bonjour,
Et merci pour vos réponses.

ceslinstinct, je veux bien tester ton script si c'est possible car c'est en effet la présentation que je recherche.
Bonjour

Tu m'envoie par MP une adresse mail, et je posterais l'application (à ouvrir avec l'éditeur de scripts pour contrôler le code avant de tester).

@+

---------- Nouveau message ajouté à 15h26 ---------- Le message précédent a été envoyé à 14h47 ----------

Si tu veux pas t'emm*** longtemps le plus simple c'est de faire des copié collé successifs
en commencant par dossiers 1 er niveau
et de faire premiere mise en page genre paragraphes , et ou retraits pour futurs sous paragraphes (sous dossiers) etc

puis idem avec sous dossier
et sous dossiers des sous dossiers

c'est rapide
Bonjour

Mon code est de l'AppleScript, donc pas très rapide.

Testé sur un dossier contenant des sous-dossiers (494 éléments), temps passé 1 seconde.

@+
 
Si tu veux pas t'emm*** longtemps le plus simple c'est de faire des copié collé successifs
en commencant par dossiers 1 er niveau
et de faire premiere mise en page genre paragraphes , et ou retraits pour futurs sous paragraphes (sous dossiers) etc

puis idem avec sous dossier
et sous dossiers des sous dossiers

c'est rapide

C'est rapide si tu as un ou 2 sous dossiers mais j'ai souvent plusieurs centaines de dossiers & sous dossiers & plusieurs milliers de fichiers

Par contre quand j'aurai un peu de temps je regarderai avec attention l'histoire du "tree" avec le terminal.
 
Ce n'est pas l'endroit pour poster un code.

Par un eMail c'est possible si la personne désire tester.

@+


LOL

Un code efficace:
Bloc de code:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
 
Un peu indigeste le résultat! ;)

Roooh

Voila
Bloc de code:
#!/bin/bash
parcours() {
cd "$1"
cpt="$2"
 for i in *;do
    if [ -d "$i" ];then
            indent $cpt
        echo "|-- REP: $i"
        cpt=`expr $cpt + 1`
        parcours "$i" "$cpt"
        cpt=`expr $cpt - 1`
        cd ..
    elif [ -f "$i" ]; then
            indent $cpt
        echo "|-- FIC: $i"
    fi
 done
}

indent () {
    for a in $(seq 1 "$1"); 
        do 
            echo -n "|   "; 
        done
}

parcours . 0

Résultat:
Bloc de code:
[ edd MiniToto ~/Desktop ] ./test.sh 
|-- REP: dossier sans titre 4
|   |-- FIC: Capture d’écran 2014-01-30 à 18.12.47.png
|   |-- FIC: Zapture d’écran 2014-01-30 à 18.12.47 2.png
|   |-- REP: dossier sans titre 1
|   |   |-- FIC: Zapture d’écran 2014-01-30 à 18.12.47 2 - copie.png
|   |-- REP: dossier sans titre 3
|   |   |-- FIC: Capture d’écran 2014-01-30 à 18.12.41.png
|   |   |-- FIC: Capture d’écran 2014-01-30 à 18.12.45.png
|   |   |-- FIC: Capture d’écran 2014-01-30 à 18.12.47.png
|-- FIC: test.sh

Après tu mets la mise en forme que tu veux sur les echo.

---------- Nouveau message ajouté à 19h47 ---------- Le message précédent a été envoyé à 18h54 ----------

Et si tu aimes la couleur:
Bloc de code:
#!/bin/bash

parcours() {
cd "$1"
cpt="$2"
for i in *;do
col=`expr $col + 2`
        if [ $col -eq 39 ]; then
            col=33
        fi
    if [ -d "$i" ];then
            indent $cpt
        echo -e "\033[1;34m|-- \033[1;`expr ${col} - 2`m$i"
        cpt=`expr $cpt + 1`
        parcours "$i" "$cpt"
        cpt=`expr $cpt - 1`
        cd ..
    elif [ -f "$i" ]; then
            indent $cpt
        echo -e "\033[1;34m|-- \033[1;${col}m$i \033[1;`expr ${col} - 2`m(`stat --printf=\"%s\" \"$i\"`)"
    fi
col=`expr $col - 2`
        if [ $col -eq 31 ]; then
            col=37
        fi
 done
}

indent () {
    for a in $(seq 1 "$1"); 
        do 
            echo -ne "\033[1;34m|   "; 
        done
}

col=33
parcours . 0
 
Merci pour cet effort!

Au moins c'est exhaustif!
En plaisantant, je dirai : on en demandait pas tant!...

Mais sur un disque d'1To presque plein...

Je n'ai pas du savoir utiliser... Il court encore!
Je vois défiler entre autres les "tripes" des fichiers iPhoto...

Peux-tu donner la syntaxe pour "scanner" seulement un dossier?
 
Peux-tu donner la syntaxe pour "scanner" seulement un dossier?

Le parcours démarres au niveau du dossier courant (.):
Bloc de code:
parcours . 0
Il suffit donc de te positionner (cd) dans le dossier que tu veux scanner, puis de lancer le script.

Alternativement, tu peux mettre ton cd avant le parcours dans le script.

Ou bien ajouter un paramètre au script.

Donc l'appeler avec:
Bloc de code:
./script.sh "/chemin/à/parcourir/"
Puis dans le code ajouter au début (avant la fonction parcours):
Bloc de code:
#pour mémoriser où tu étais et y revenir à la fin
chemincourant=`pwd`
cd "$1"
Et à la toute fin:
Bloc de code:
cd "$chemincourant"
(et ce qui serait plus propre serait de tester l'existence de ce paramètre et sa validité -> vérifier que c'est bien un répertoire -d)

Les alias et les liens symboliques sont résolus par le parcours, c'est à dire que si tu as un alias vers Applications alors Applications va être parcouru.
 
Dernière édition:
Merci
Je vais tester pour apprendre…
____________________________

Il court toujours!
Je le laisse pour voir si ça va "converger"...
 
Tu as essayé avec FreeMind (ou autre appli de carte mentale) ? Fichier > Importer > arborescence de dossier. Ça te donne la hiérarchie; suffit d'exporter en mode texte ensuite. On perd peut-être les infos des dossiers et fichiers comme les dates, etc.



Sur quel Os ? Ça me donne rien sous ML…

sous 10.9.1 mais il me semble que la fonction existait déjà sous 10.8


Ceslinstinct : ton scrip est super, je l'ai adopté :)

Merci