Используйте pipe и awk для написания однострочной программы. - PullRequest
0 голосов
/ 21 октября 2019

Я застрял в задаче домашней работы, которая требует от меня написания сценария оболочки, который выполняет следующие действия:

  • вычисляет количество подкаталогов в.
  • вычисляет количество файлов в,и его подкаталоги
  • вычисляют суммарный размер всех файлов в. и в его подкаталогах
  • перечислены 5 самых больших файлов в. и его подкаталоги

В ОДНОЙ СТРОКЕ. У меня есть однострочные команды для каждого из вышеперечисленных пунктов, но я совершенно заблудился относительно того, как написать всю программу в одну строку. Мой профессор посоветовал мне использовать awk, но я все еще не могу найти способ сделать это.

Вот сценарий до сих пор:

#!/bin/sh

# Calculate the number of directories in .
ls -l . | grep -c ^d

# Calculate the number of files in .
ls -l . | egrep -c '^-'

# Calculate the sum size of all files in .
ls -Cl | awk '{ sum += $5 } END { print sum }'

# List the top 5 biggest files in .
find . -type f | xargs ls -lSh | head -n 5

1 Ответ

0 голосов
/ 21 октября 2019

Рассчитать количество каталогов в.

ls -dR | wc -l

Рассчитать количество файлов в.

ls -l | grep -v "^ d "| wc -l

Рассчитать суммарный размер всех файлов в.

du -sh.

Список 5 самых больших файлов в.

du -sh * | sort -ar | head 5

...