396 votes

L'équivalent Mac OS X de la commande "tree" d'Ubuntu

Existe-t-il un équivalent de l'application Ubuntu tree commande pour Mac OS X ?

559voto

slhck Points 209720

Vous pouvez obtenir le tree sur macOS, aussi. Si vous avez Homebrew :

brew install tree

Si vous n'avez pas installé Homebrew, essayez de un approche ci-dessous.


Installation d'une approche de gestionnaire de paquets

Suivez les instructions de ces sites web pour installer Homebrew , MacPorts ou Fink . N'installez pas plus d'un gestionnaire de paquets en même temps !

Suivez les instructions de l'appareil que vous avez installé.

Pour Homebrew : brew install tree

Pour MacPorts : sudo port install tree

Pour Fink : fink install tree

Installation à partir de l'approche source

  1. Installez les outils de ligne de commande Xcode en exécutant xcode-select --install .

  2. Télécharger le tree source

  3. Changez le Makefile pour le faire fonctionner qui est également expliqué dans La réponse de @apuche ci-dessous . Mettre en commentaire les options Linux et décommenter les options macOS devrait être suffisant.

  4. Ensuite, exécutez ./configure entonces make .

  5. Maintenant, vous devez déplacer le tree à un endroit qui se trouve dans le chemin de l'exécutable. Par exemple :

     sudo mkdir -p /usr/local/bin
     sudo cp tree /usr/local/bin/tree
  6. Modifier maintenant ~/.bash_profile à inclure :

     export PATH="/usr/local/bin:$PATH"
  7. Rechargez le Shell, et maintenant which tree doit pointer vers /usr/local/bin/tree .

0 votes

shaunchapmanblog.com/post/329270449/ semble également contenir des instructions détaillées mais peut causer des problèmes avec llvm-gcc sous /Developer si vous utilisez Xcode 4.x ; un peu de bricolage devrait suffire.

0 votes

@MishaMoroshko Content que ça ait marché. Vous trouverez de nombreux programmes sur Homebrew, donc si jamais il vous manque quelque chose que vous aviez sur Ubuntu ou que vous pensiez que seul Linux peut avoir, Homebrew devrait vous aider !

0 votes

"Problématique" comment ?

53voto

nonopolarity Points 9110

Ce n'est pas exactement la même chose, mais un moyen rapide sur le Mac est :

find .

et c'est tout. Il énumérera tous les chemins de fichiers dans le répertoire actuel sous forme de liste.

0 votes

Si vous vous intéressez à un répertoire particulier : find ./<nom_du_répertoire>

1 votes

Si vous n'êtes intéressé que par les fichiers, find . -type f

4 votes

J'étais seulement intéressé à aller à quelques niveaux de profondeur pour montrer la structure du répertoire donc find . -type d -maxdepth 2 a fonctionné pour moi

28voto

apouche Points 371

Ou si votre administrateur ne vous permet pas d'installer l'un des éléments suivants brew , fink , port vous pouvez toujours le construire à partir des sources :

curl -O ftp://mama.indstate.edu/linux/tree/tree-1.5.3.tgz
tar xzvf tree-1.5.3.tgz
cd tree-1.5.3/
ls -al

Editez le Makefile pour commenter la partie linux et décommenter la partie osx :

# Linux defaults:
#CFLAGS=-ggdb -Wall -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
#CFLAGS=-O2 -Wall -fomit-frame-pointer -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
#LDFLAGS=-s

# Uncomment for OS X:
CC=cc
CFLAGS=-O2 -Wall -fomit-frame-pointer -no-cpp-precomp
LDFLAGS=
XOBJS=strverscmp.o

Facultatif : Forçage de la sortie couleur

Et pendant que vous y êtes, si vous voulez forcer l'arbre à toujours coloriser la sortie, vous pouvez toujours éditer le fichier de configuration de l'arbre. main de la méthode tree.c et ajouter force_color=TRUE; avant setLocale(LC_TYPE,"");

Enfin frappé make et vous avez fini de construire tree pour Mac.

Hommage à Shaun Chapman pour son billet original sur son blog.

0 votes

Je n'ai pas pu accéder au site Web de Shaun ; merci de m'avoir indiqué comment modifier le Makefile.

0 votes

Plus précisément, vous pouvez ajouter force_color = TRUE; . Sans point-virgule, vous obtenez une erreur de compilation.

1 votes

Je viens de construire la version 1.7 et au lieu de setLocale son setlocale . Donc en tree.c vous cherchez setlocale(LC_TYPE,"") ; et merci !

23voto

Gianluca Points 101

Il n'y a pas d'accord formel tree mais vous pouvez le faire :

Enregistrez le script suivant dans /usr/local/bin/tree

#!/bin/bash

SEDMAGIC='s;[^/]*/;|____;g;s;____|; |;g'

if [ "$#" -gt 0 ] ; then
   dirlist="$@"
else
   dirlist="."
fi

for x in $dirlist; do
     find "$x" -print | sed -e "$SEDMAGIC"
done

Change les permissions pour que tu puisses l'exécuter :

chmod 755 /usr/local/bin/tree 

Bien sûr, vous devrez peut-être créer /usr/local/bin :

sudo mkdir -p /usr/local/bin/tree

0 votes

Il lui manque toutes les options de tree mais c'est quand même une bonne petite solution.

0 votes

@slhck hehe c'était une solution rapide de hack...

0 votes

Vous pourriez vouloir citer vos variables cependant.

21voto

nichochar Points 347

Vous devriez probablement utiliser homebrew . Si vous le faites :

brew install tree

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X