GNU/Linux >> Belajar Linux >  >> Linux

perintah linux tree membatasi jumlah file yang ditampilkan di setiap direktori

Berikut adalah contoh kerja dengan kode python yang Anda kutip:

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

Jika angka ditentukan untuk -f [file limit] maka ... <additional files> dicetak dan file lainnya dilewati. Direktori tambahan tidak boleh dilewati. Jika batas file disetel ke 10.000 (default), ini berlaku sebagai tanpa batas

#! /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()

Saat dijalankan, seharusnya menghasilkan keluaran yang mirip dengan:

[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>

Seseorang dapat menggunakan tree --filelimit=N untuk membatasi jumlah subdirektori/file yang akan ditampilkan. Sayangnya, ini tidak akan membuka direktori yang memiliki lebih dari N subdirektori dan file.

Untuk kasus sederhana, ketika Anda memiliki banyak direktori dan sebagian besar memiliki terlalu banyak (katakanlah> 100) file, Anda dapat menggunakan 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

Catatan , jika A1/C2 memiliki subdirektori A3, itu tidak akan ditampilkan.

N.B. Ini bukan solusi lengkap tetapi akan lebih cepat untuk beberapa orang.


Linux
  1. Cara Meningkatkan Jumlah Batas File Terbuka di Linux

  2. Jumlah maksimum file/direktori di Linux?

  3. Bagaimana cara menghitung jumlah file di setiap direktori?

  1. Cara Menemukan Jumlah File dalam Direktori dan Subdirektori

  2. Perintah Linux ls - Daftar File

  3. Perintah mcopy di Linux

  1. Perintah Cd di Linux (Ubah Direktori)

  2. Perintah Pindah Direktori Linux

  3. perintah linux untuk mengosongkan semua file direktori