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

37

Pour une de mes tâches, je dois répertorier tous les fichiers d’un arbre (un répertoire, tous ses sous-répertoires, tous les sous-répertoires, 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, les noms de fichiers complets, les tailles et les délais de modification doivent être listés).

    
posée Ivan 30.11.2010 - 00:28
la source

10 réponses

36

arbre vous sera très utile.

sudo apt-get install tree

utiliser tree filepath pour lister les fichiers.

    
réponse donnée kit.yang 30.11.2010 - 02:33
la source
24
ls -alR

C'est probablement la méthode la plus simple. Je suis juste en train de pirater un script de recherche pour vous donner plus de contrôle.

    
réponse donnée Oli 30.11.2010 - 00:40
la source
11
find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"

Vous pouvez jouer avec le format printf autant que vous le souhaitez. Cela vous donne une excellente opportunité de mettre les choses en forme comme vous en avez besoin, ce qui est inestimable si vous utilisez la sortie dans une autre application.

Plus: lien

Pour une meilleure lisibilité, vous pouvez tout diriger à travers la commande column et cela va automatiquement redimensionner les choses pour qu'elles soient alignées.

find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n" | column -t
    
réponse donnée Oli 30.11.2010 - 00:57
la source
4

Comme Oli a répondu, find vous permettra de rechercher une arborescence complète:

find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"

# Where %TY will display the mod. time year as 4 digits
#       %Tm will display the mod. time month as 2 digits
#       %Td will display the mod. time day as 2 digits
#       %s displays the file size in bytes
#       %p displays the full path name of the file

Vous pouvez également utiliser l’option -type f pour limiter les résultats aux seuls fichiers. Si vous souhaitez faire correspondre un modèle de fichier, vous devez utiliser les options -name ou -iname (respectivement respectant la casse et la correspondance insensible à la casse). Lisez la page de manuel de find - il existe un grand nombre d'options que vous pouvez utiliser pour affiner / affiner votre recherche.

En passant, si vous vous attendez à ce que plusieurs écrans de données vous soient renvoyés, n'oubliez pas de diffuser vos résultats dans less .

@Oli: +1 Je viens d'apprendre aussi quelque chose de nouveau - column . Je n'avais pas utilisé ça avant.

    
réponse donnée Will 30.11.2010 - 06:05
la source
3

ls est la commande standard pour répertorier les fichiers dans Ubuntu et les autres systèmes d'exploitation Linux et Unix. ls est particulièrement utile à apprendre car vous le trouverez installé sur tous les systèmes Unix que vous rencontrerez. Par défaut, cela affiche uniquement les fichiers du répertoire actuel.

Cependant, l'option -R 'flag' est l'option récursive (notez la majuscule R , pas r ) qui vous indiquera tout les sous-répertoires également.

Vous avez également demandé des "détails" - pour cela, vous voulez le drapeau -l (c'est un L minuscule, pas le numéro un). Sachez que cela vous donne des informations sur les autorisations de fichiers, ainsi que la taille du fichier, les informations d’heure / date et le nom du fichier.

Si vous souhaitez également afficher les fichiers / dossiers cachés (l'équivalent de Ctrl + H dans Nautilus), ajoutez l'indicateur -a 'all'.

Vous pouvez fusionner des indicateurs pour vous donner quelque chose comme:

ls -lR

Si vous l'exécutez sur un dossier de taille décente, vous constaterez que cela produit une énorme sortie longue qui fait défiler votre écran très rapidement. Pour contourner ce problème, vous pouvez "diriger" la sortie de ls dans un programme appelé less (le nom est une parodie du more similaire qui était présent en premier mais a plus de fonctionnalités).

ls -lR | less

Cela vous permettra d'utiliser les touches fléchées haut / bas, à côté de PageUp / Down, pour parcourir la sortie à une vitesse plus confortable.

    
réponse donnée 8128 30.11.2010 - 08:48
la source
0

Utiliser Krusader:

  1. Utiliser la recherche (Ctl-S).
  2. Cochez "rechercher dans les sous-répertoires".
  3. Cliquez sur "Rechercher".
  4. Lorsque la recherche est terminée, cliquez sur "Feed to listbox".

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

    
réponse donnée Frank Z. 28.08.2013 - 07:23
la source
0

Qu'en est-il d'un script Nautilus ?

#!/bin/bash
#
# AUTHOR:       (c) 2013 Glutanimate (https://askubuntu.com/users/81372)
# NAME:         DirTree 0.1
# DEPENDENCIES: zenity tree  (install with sudo apt-get install zenity tree)
# LICENSE:      GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
#
# DESCRIPTION:  Creates a directory tree at the current location. If you want you
#               can filter the output by a pattern (e.g. *.avi to only include avi
#               files).

TITLE=DirTree

# Get working directory
WORKINGDIR="'python -c 'import gio,sys; print(gio.File(sys.argv[1]).get_path())' $NAUTILUS_SCRIPT_CURRENT_URI'"

# Time and date
TIME=$(date +"%Y-%m-%d_%H%M%S")

# Filter pattern
zenity --question --title "$TITLE" --text "Do you want to filter by a specific file pattern?"

if [ "$?" = "1" ]
  then
      customtree="tree"
  else
      PATTERN=$(zenity --entry --title "$TITLE" --text="Please enter a file pattern (e.g. *.avi)")

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

fi

# Directory tree
$customtree "$WORKINGDIR" > "$WORKINGDIR/directorytree_$TIME.txt"

Instructions d'installation: Comment installer un script Nautilus?

    
réponse donnée Glutanimate 28.08.2013 - 08:01
la source
0

J'ai créé un programme spécialement à cet effet - Répertoire Snapshot .
Il parcourt récursivement un répertoire et stocke les noms et tailles de tous les fichiers et dossiers qu'il rencontre dans des fichiers HTML bien structurés, dont l'organisation est similaire à celle du répertoire d'entrée.
En d'autres termes, cela peut être considéré comme une version avec hyperlien de la dir /s ou < a href="https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/tree.mspx?mfr=true"> tree /f

    
réponse donnée Anmol Singh Jaggi 06.03.2016 - 11:58
la source
0

Nautilus

  1. Activer l'extension des sous-dossiers dans la 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 un astérisque ( * sur le pavé numérique, ou sur Shift + 8 ) pour agrandir un niveau de sous-répertoires. Chaque fois que vous appuyez sur un astérisque, le niveau suivant s’étend.

Cela fonctionne aussi à Nemo.

    
réponse donnée wjandrea 29.12.2017 - 00:36
la source
-1

vous pouvez les mettre dans votre fichier .bashrc

function _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 dans n’importe quel répertoire et elle affichera toute la hiérarchie.

Syntaxe:

$ get_tree

Exemple de sortie:

   .

    ..test.sh

   |-2

      ..123.log

   |---3

   |-----4

   |-5

   |---6

Hope, This Helps !!

    
réponse donnée Nitish Srivastava 21.07.2015 - 22:36
la source

Lire d'autres questions sur les étiquettes