Суммируйте общий размер файлов, принадлежащих конкретному пользователю

Я хочу суммировать размер всех файлов (рекурсивно), которые находятся в собственности конкретного пользователя. Хотя я не хочу иметь огромный список всех каталогов, только общий размер.

Поэтому решение из этого ответа, как:

find . -user BobTheCat -type d -exec du -hs {} \;

должен быть изменен, но как?

Я знаю, что это возможно с последующей обработкой чего-то вроде awk, но я думаю, что это можно сделать проще.

2 ответа

Решение

Если твой find корабли с -printf, используйте это. Например:

$ find . -user BobTheCat -type f -printf '%s\n' | awk '{bytes+=$0}END{print bytes}'

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

find . -user BobTheCat -type d -exec du -shc {} + -prune | egrep '^total\b'

-prune предотвращает find от повторения в каталог, так как du -s уже делает это, и это приведет к подсчету каждого подкаталога несколько раз.

-c возможность du говорит ему напечатать итоговую сумму в конце, и tail -1 просто печатает эту строку.

Если вы хотите включить файлы, которые принадлежат BobTheCat, но не в каталогах, которыми он владеет, удалите -type d от find,

Другие вопросы по тегам