Суммируйте общий размер файлов, принадлежащих конкретному пользователю
Я хочу суммировать размер всех файлов (рекурсивно), которые находятся в собственности конкретного пользователя. Хотя я не хочу иметь огромный список всех каталогов, только общий размер.
Поэтому решение из этого ответа, как:
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
,