Arborescence de répertoire

ArrowIV

Membre confirmé
10 Avril 2005
24
0
76
de Mars
Cette question a déjà été posée mais sans réponse satisfaisante.
J'ai trouvé cette commande unix pour développer graphiquement une arborescence:

ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
# 1st sed: remove colons
# 2nd sed: replace higher level folder names with dashes
# 3rd sed: indent graph three spaces
# 4th sed: replace first dash with a vertical bar
if [ `ls -F -1 | grep "/" | wc -l` = 0 ] # check if no folders
then echo " -> no sub-directories"
fi

Cette cmde affiche les dossiers ET les fichiers qu'ils contiennent.
je voudrais savoir comment modifier cette cmde pour n'afficher QUE LES DOSSIERS et pas les fichiers qu'ils contiennent car ça fait une tartine trop longue.
J'en aurais besoin juste pour avoir l'architecture du disque Système et essayer de la comprendre.

Merci pour votre attention ;)
 
Tu pourrais utiliser l'utilitaire tree.
 
Bloc de code:
ls: illegal option -- D
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

;)

Je pense que tu pensais à 'd'. Mais chez moi ça ne donne rien.
 
Non, je parlais bien de D (l'option existe dans le ls du Shell de Snow Leopard) mais en fait ça n'apporte rien de plus (rien à voir, c'est pour le formattage), la commande:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
n'affichant déjà QUE les répertoires chez moi (OS X 10.6, du bash donc), le grep filtrant les fichiers (en ne gardant que les lignes qui se terminent par ":", c'est à dire les répertoires).

Donc, j'avoue ne pas bien comprendre la question.
 
Bizarre.
Je n'ai pas d'option '-D' avec le ls de Snow Leopard.

Quant à la ligne de commande, elle semble ramener uniquement les répertoires en effet ;)
 
La version de mon LS:
Bloc de code:
[ edd MiniToto ~ ] ls --version

ls (GNU coreutils) 8.4
Copyright © 2010 Free Software Foundation, Inc.
License GPLv3+ : GNU GPL version 3 ou ultérieure
<http://gnu.org/licenses/gpl.html>
Ceci est logiciel libre, vous êtes libre de le modifier et de le redistribuer.
Ce logiciel n'est accompagné d'ABSOLUMENT AUCUNE GARANTIE, dans les limites
autorisees par la loi applicable.
Écrit par Richard M. Stallman et David MacKenzie.

Tu es à jour?
 
Non, je parlais bien de D (l'option existe dans le ls du Shell de Snow Leopard) mais en fait ça n'apporte rien de plus (rien à voir, c'est pour le formattage), la commande:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
n'affichant déjà QUE les répertoires chez moi (OS X 10.6, du bash donc), le grep filtrant les fichiers (en ne gardant que les lignes qui se terminent par ":", c'est à dire les répertoires).

Donc, j'avoue ne pas bien comprendre la question.

C'est vrai, ça ne sort QUE les dossiers; en fait il y a une kyrielle de dossiers avec "." (genre .nib), ll faut que je les élimine et j'aurai ENFIN une réponse propre avec les seuls dossiers comme affichés avec Finder. :nailbiting:
 
Donc les besoins initiaux étaient mal exprimés ;)

@edd72 : si tu fais
Bloc de code:
which -a ls
ça te dit quoi ?
 
ArrowIV ,C'est bien de vouloir faire de la ligne de commande mais faut quand même avoir des bases...

grep -v affiche les lignes en non concordance avec le motif (dans ton cas le motif sera "commence par ."). Donc avec une redirection (|) là-dedans, tu élimines les repertoires débutants par .

Le truc, c'est que ta commande n'affiche déjà pas les répertoires començant par .
Puisque ton LS n'a pas l'option a (ls -Ra t'afficherait ces répertoires commençant par . mais pas là)

Alors expliques nous donc ce que tu fais en fait? Tu nous parles d'un pb de listage de fichiers qu'il n'y a pas, puis un problème de répertoires començant par un point qui ne se pose pas non plus avec ta commande...

---------- Nouveau message ajouté à 17h27 ---------- Le message précédent a été envoyé à 17h25 ----------

Donc les besoins initiaux étaient mal exprimés ;)

@edd72 : si tu fais
Bloc de code:
which -a ls
ça te dit quoi ?


/opt/local/bin/ls


Cela dit, j'ai installé Xcode et d'autres trucs pour fink, je n'utiliserai donc pas le même ls??

---------- Nouveau message ajouté à 17h35 ---------- Le message précédent a été envoyé à 17h27 ----------

En effet, le ls d'OSX semble disposer de moins d'option que celui standard d'Unix:
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/ls.1.html
http://unixhelp.ed.ac.uk/CGI/man-cgi?ls
Par contre, pourquoi ai-je toutes les options, je ne sais pas.
 
Note que "le ls standard d'UNIX", je ne sais pas si ça existe ;)

Dans ton chemin, tu as donc /opt/local/bin avant /bin, ce qui est un choix éventuellement discutable. Pour moi, Fink s'installait dans /sw et MacPorts dans /opt.

Bref, effectivement, tu as le ls de GNU, pas celui d'Apple, qui est sans doute hérité de celui de FreeBSD.
C'est sur Linux que l'on trouve les outils de GNU par défaut.
 
Alors ce doit être MacPort, sans doute car j'ai eu à compiler Dolphin: http://code.google.com/p/dolphin-emu/wiki/MacOSX_Build

Tu sais comment lister toutes les commandes avec leur localisation sur le disque (pour détecter tout ce qui est hors de /bin et comment réaffecter ça?

[EDIT]
OK, j'ai ça dans mon .login

# MacPorts Installer addition on 2010-05-27_at_13:34:37: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.

Et ça dans mon $PATH
/usr/local/mysql/bin:/sw/bin:/sw/sbin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/X11/bin
[/EDIT]

Faudra que je fasse gaffe avant de poster des scripts pour OSX...
 
Une commande toute seule, non.
Mais il te suffit de regarder le chemin ($PATH), d'isoler les chemins ajoutés (ceux de Fink, de MacPorts, de MySQL etc.) et de lister toutes les commandes qui s'y trouvent.

Il n'est pas gênant d'avoir plusieurs fois la même commande. Ce qui est gênant est de ne pas être sûr de celle qui va être lancée.
En général, je préfère que, par défaut, les commandes installées par le système soient choisies et, lorsque je veux spécifiquement utiliser une version ajoutée, je crée un alias ou des scripts dans lesquels le chemin est modifié. Cela évite certaines mauvaises surprises ;)