2016-03-15 4 views
0

У меня есть файлы в каталоге, и я хочу знать среднее число этих файлов в BASH.I am в папке, где есть 4 файла, и я хочу написать код, который даст мне среднее число файлов в этом каталоге. Я нахожу что-то общее Unix find average file size, но это дает мне средний размер файла, но я хочу получить среднее количество или количество этих файлов.Unix найти среднее количество файлов в каталоге

+0

У вас есть каталог (A), содержащий каталоги (B), что все файлы, содержащиеся, и вы должны знать среднее число файлы в этих каталогах (B)? – andlrc

+2

Пожалуйста, уточните, что такое подход – cmks

+0

Я пишу скрипт, который будет писать все каталоги, максимальную глубину самого большого каталога, и последнее, что мне нужно, это среднее количество/количество файлов в этом каталоге. Но я не знаю, как это получить. –

ответ

0

Попробуйте это:

FILES=$(find . -type f | wc -l) 
DIRS=$(find . -type d | wc -l) 
AVG=$(($FILES/$DIRS)) 
echo $AVG 

Примечание это имеет целочисленную точность, то есть целые числа без знаков после запятой. Чтобы получить 3 десятичных позиций, используйте этот хак (ОК не посудить меня):

AVG=$((1000 * $FILES/$DIRS)) 
echo $AVG | sed "s/\(...\)$/\.\1/" 
0

Использование команды tree -F. Он будет выполнять большую часть работы, в которой вы нуждаетесь. Например,

Перейдите в /dir1/dir2/lib/python3.4/venv директорию библиотеки python и введите дерево -F. Затем вы получите следующие строки. Тот, который заканчивается на /, является каталогом. И вы можете определить структуру подкаталога, посчитав число | в линии.

|-- __init__.py 
|-- __pycache__/ 
| |-- __init__.cpython-34.pyc 
| `-- __init__.cpython-34.pyo 
`-- futures/ 
    |-- __init__.py 
    |-- __pycache__/ 
    | |-- __init__.cpython-34.pyc 
    | |-- __init__.cpython-34.pyo 
    | |-- _base.cpython-34.pyc 
    | |-- _base.cpython-34.pyo 
    | |-- process.cpython-34.pyc 
    | |-- process.cpython-34.pyo 
    | |-- thread.cpython-34.pyc 
    | `-- thread.cpython-34.pyo 
    |-- _base.py 
    |-- process.py 
    `-- thread.py 

Другими словами, большая часть работы выполняется командой tree -F.

Смежные вопросы