43 votes

Comment lister tous les fichiers dans un arbre (un répertoire et ses sous-répertoires) ?

Pour une tâche, j'ai besoin de lister tous les fichiers dans un arbre (un répertoire, tous ses sous-répertoires, tous les sous-répertoires de ces derniers, etc.).

Je préférerais les voir dans Nautilus ou Krusader, mais une solution en ligne de commande est également intéressante (dans ce cas, j'aurai besoin des noms complets des fichiers, de leurs tailles et de leurs heures de modification).

0voto

Lillypalooza Points 36

Utiliser Krusader:

  1. Utilisez la fonction Rechercher (Ctl-S).
  2. Cochez la case "rechercher dans les sous-répertoires".
  3. Cliquez sur "Rechercher".
  4. Lorsque la recherche est terminée, cliquez sur "Ajouter à la liste".

Cela vous permettra de traiter l'ensemble en le faisant glisser vers l'autre panneau, etc.

0voto

Glutanimate Points 20429

Que diriez-vous d'un script Nautilus?

#!/bin/bash
#
# AUTEUR:       (c) 2013 Glutanimate (https://askubuntu.com/users/81372)
# NOM:          DirTree 0.1
# DÉPENDANCES:  zenity tree  (à installer avec sudo apt-get install zenity tree)
# LICENCE:      GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
#
# DESCRIPTION:  Crée un arbre de répertoires à l'emplacement actuel. Si vous le souhaitez
#               vous pouvez filtrer la sortie avec un motif (par exemple *.avi pour inclure uniquement les fichiers avi).

TITRE=DirTree

# Obtenir le répertoire de travail
WORKINGDIR="`python -c 'import gio,sys; print(gio.File(sys.argv[1]).get_path())' $NAUTILUS_SCRIPT_CURRENT_URI`"

# Heure et date
TEMPS=$(date +"%Y-%m-%d_%H%M%S")

# Motif de filtrage
zenity --question --title "$TITRE" --text "Voulez-vous filtrer par un motif de fichier spécifique?"

if [ "$?" = "1" ]
  then
      customtree="tree"
  else
      MOTIF=$(zenity --entry --title "$TITRE" --text="Veuillez entrer un motif de fichier (par exemple *.avi)")

         if [ -z "$MOTIF" ]
           then
               exit
           else
               customtree="tree -P $MOTIF"               
         fi

fi

# Arbre de répertoire
$customtree "$WORKINGDIR" > "$WORKINGDIR/directorytree_$TEMPS.txt"

Instructions d'installation: Comment puis-je installer un script Nautilus?

0voto

Anmol Singh Jaggi Points 456

J'ai créé un programme spécialement pour cela - Directory Snapshot.
Il parcourt de manière récursive un répertoire et stocke les noms et tailles de tous les fichiers et dossiers rencontrés dans des fichiers HTML soigneusement structurés, qui ont une organisation similaire à celle du répertoire d'entrée.
En d'autres termes, cela peut être considéré comme une version hyperliée des commandes dir /s ou tree /f.

0voto

wjandrea Points 13147

Nautilus

  1. Activer l'expansion des sous-dossiers en vue liste
    • Pour 14.04 et 16.04, voir ici
    • Pour 17.10 et 18.04, voir ici
  2. Cliquez sur un dossier et appuyez sur l'astérisque (* sur le pavé numérique, ou Shift+8) pour étendre un niveau de sous-répertoires. Chaque fois que vous appuyez sur l'astérisque, cela va étendre le niveau suivant.

Cela fonctionne également dans Nemo.

-1voto

Vous pouvez mettre cela dans votre fichier .bashrc

fonction _get_tree(){ ls -alR | while read LINE; do   echo $LINE | grep ":$" > /dev/null;   if [ $? -eq 0 ];   then     VAR=$(echo $LINE | grep ":$"| sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/' | tee /dev/tty);   fi;   echo $LINE | grep "^-" > /dev/null;   if [ $? -eq 0 ];   then     size=${#VAR};     for i in $(eval echo "{1..$size}"); do echo -n ' '; done;     echo -n '..';     echo $LINE | cut -d ' ' -f9;   fi; done; };

alias get_tree='_get_tree'

Maintenant, vous pouvez utiliser la commande get_tree à l'intérieur de n'importe quel répertoire et il affichera l'ensemble de la hiérarchie.

Syntaxe:

$ get_tree

Sortie d'exemple:

   .

    ..test.sh

   |-2

      ..123.log

   |---3

   |-----4

   |-5

   |---6

En espérant que cela soit utile !!

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