GNU/Linux >> Tutoriels Linux >  >> Linux

linux tree command limite le nombre de fichiers affichés dans chaque répertoire

Voici un exemple de travail avec le code python que vous avez cité :

Utilisation :tree.py -f [file limit] <directory>

Si un nombre est spécifié pour -f [limite de fichier] alors ... <additional files> est imprimé et les autres fichiers sont ignorés. Cependant, les répertoires supplémentaires ne doivent pas être ignorés. Si la limite de fichiers est définie sur 10000 (par défaut), cela agit comme aucune limite

#! /usr/bin/env python
# tree.py
#
# Written by Doug Dahms
# modified by glallen @ StackExchange
#
# Prints the tree structure for the path specified on the command line

from os import listdir, sep
from os.path import abspath, basename, isdir
from sys import argv

def tree(dir, padding, print_files=False, limit=10000):
    print padding[:-1] + '+-' + basename(abspath(dir)) + '/'
    padding = padding + ' '
    limit = int(limit)
    files = []
    if print_files:
        files = listdir(dir)
    else:
        files = [x for x in listdir(dir) if isdir(dir + sep + x)]
    count = 0
    for file in files:
        count += 1
        path = dir + sep + file
        if isdir(path):
            print padding + '|'
            if count == len(files):
                tree(path, padding + ' ', print_files, limit)
            else:
                tree(path, padding + '|', print_files, limit)
        else:
            if limit == 10000:
                print padding + '|'
                print padding + '+-' + file
                continue
            elif limit == 0:
                print padding + '|'
                print padding + '+-' + '... <additional files>'
                limit -= 1
            elif limit <= 0:
                continue
            else:
                print padding + '|'
                print padding + '+-' + file
                limit -= 1

def usage():
    return '''Usage: %s [-f] [file-listing-limit(int)] <PATH>
Print tree structure of path specified.
Options:
-f          Print files as well as directories
-f [limit]  Print files as well as directories up to number limit
PATH        Path to process''' % basename(argv[0])

def main():
    if len(argv) == 1:
        print usage()
    elif len(argv) == 2:
        # print just directories
        path = argv[1]
        if isdir(path):
            tree(path, ' ')
        else:
            print 'ERROR: \'' + path + '\' is not a directory'
    elif len(argv) == 3 and argv[1] == '-f':
        # print directories and files
        path = argv[2]
        if isdir(path):
            tree(path, ' ', True)
        else:
            print 'ERROR: \'' + path + '\' is not a directory'
    elif len(argv) == 4 and argv[1] == '-f':
        # print directories and files up to max
        path = argv[3]
        if isdir(path):
            tree(path, ' ', True, argv[2])
        else:
            print 'ERROR: \'' + path + '\' is not a directory'
    else:
        print usage()

if __name__ == '__main__':
    main()

Lorsqu'il est exécuté, il devrait produire une sortie semblable à :

[email protected] /usr/share/doc $ python /tmp/recipe-217212-1.py -f 2 . | head -n 40
+-doc/
  |
  +-libgnuradio-fft3.7.2.1/
  | |
  | +-copyright
  | |
  | +-changelog.Debian.gz
  |
  +-libqt4-script/
  | |
  | +-LGPL_EXCEPTION.txt
  | |
  | +-copyright
  | |
  | +-... <additional files>
  |
  +-xscreensaver-gl/
  | |
  | +-copyright
  | |
  | +-changelog.Debian.gz
  | |
  | +-... <additional files>

On peut utiliser tree --filelimit=N pour limiter le nombre de sous-répertoires/fichiers à afficher. Malheureusement, cela n'ouvrira pas le répertoire qui a plus de N sous-répertoires et fichiers.

Pour les cas simples, lorsque vous avez plusieurs répertoires et que la plupart ont trop de fichiers (disons> 100), vous pouvez utiliser tree --filelimit=100 .

.
├── A1
│   ├── A2
│   ├── B2
│   ├── C2 [369 entries exceeds filelimit, not opening dir]
│   └── D2 [3976 entries exceeds filelimit, not opening dir]
├── B1
│   └── A2
│       ├── A3.jpeg
│       └── B3.png
└── C1.sh

Remarque , si A1/C2 a un sous-répertoire A3, il ne sera pas affiché.

P.S. Ce n'est pas une solution complète mais sera plus rapide pour quelques-uns.


Linux
  1. Comment augmenter la limite du nombre de fichiers ouverts sous Linux

  2. Comment trouver le nombre de fichiers dans un répertoire et des sous-répertoires

  3. Commande Linux ls - Lister les fichiers

  4. Commande mcopy sous Linux

  5. Comment compter le nombre de fichiers dans chaque répertoire ?

Comment lister les fichiers de manière récursive sous Linux

Comment compter les fichiers dans le répertoire sous Linux

Compter le nombre de fichiers dans un répertoire sous Linux

Comment compter le nombre de fichiers dans un répertoire sous Linux

Commande ls sous Linux/UNIX

Linux :rechercher le nombre de fichiers dans un répertoire et des sous-répertoires