web-dev-qa-db-fra.com

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

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 de ceux-ci, 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 de fichiers avec les noms complets, les tailles et les heures de modification).

41
Ivan

( tree vous sera très utile.

Sudo apt-get install tree

en utilisant tree filepathpour lister les fichiers.

39
kit.yang
ls -alR

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

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

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

Plus: http://linux.about.com/od/commands/l/blcmdl1_find.htm

Pour une meilleure lisibilité, vous pouvez diriger tout cela à travers la commande column qui redimensionnera automatiquement les éléments pour les aligner.

find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n" | column -t
11
Oli

Comme Oli a répondu, find vous permettra de rechercher une arborescence de répertoires 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 souhaitez que les options -name ou -iname (respectant la casse, et la correspondance ne respectant pas la casse, respectivement). Parcourez la page de manuel de find - vous disposez d’un grand nombre d’options que vous pouvez utiliser pour affiner/affiner votre recherche.

En passant, si vous vous attendez à recevoir plusieurs analyses de données, rappelez-vous de diriger vos résultats via less.

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

4
Will

ls est la commande standard pour répertorier les fichiers sous Ubuntu et d'autres systèmes d'exploitation Linux et Unix. ls est particulièrement utile car vous le trouverez installé sur tous les systèmes Unix rencontrés. Par défaut, cette opération affiche uniquement les fichiers du répertoire en cours.

Cependant, le -R 'flag' est l’option récursive (notez le majuscule R, pas r) qui vous montrera tous les sous- des répertoires aussi.

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, les informations heure/date et le nom du fichier.

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

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

ls -lR

Si vous utilisez ceci sur n'importe quel dossier de taille correcte, vous constaterez que cela produit une très longue sortie qui défile très rapidement sur votre écran. Pour contourner ce problème, vous pouvez "canaliser" la sortie de ls à travers un programme appelé less (le nom est une parodie du même nom more qui existait en premier lieu, mais qui comporte davantage de fonctionnalités).

ls -lR | less

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

3
8128

J'ai créé un programme spécialement pour cela - instantané d'annuaire .
Il effectue une itération récursive dans un répertoire et stocke les noms et la taille de tous les fichiers et dossiers qu’il rencontre dans des fichiers HTML parfaitement 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 des commandes dir /s ou tree /f .

0

Utilisation de Krusader:

  1. Utilisez la recherche (Ctl-S).
  2. Cochez "recherche 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 glissant vers l’autre panneau, etc.

0
Frank Z.

Que diriez-vous 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 puis-je installer un script Nautilus?

0
Glutanimate

Nautile

  1. Activer le développement 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 l'astérisque (* sur le pavé numérique, ou Shift+8) pour développer un niveau de sous-répertoires. Chaque fois que vous appuierez sur l'astérisque, le niveau suivant sera étendu.

Cela fonctionne aussi à Nemo.

0
wjandrea