#linux #bash #shell
#linux #bash #оболочка
Вопрос:
Я пытаюсь создать скрипт с помощью команды find, чтобы найти все каталоги с именем «bin» в каталоге «/ usr /«. Я также хочу знать размер каждого из этих каталогов. Как бы я это сделал, используя флаг -exec и команду du?
Это то, что мне удалось собрать до сих пор:
find /usr/ -name "bin" -exec
du bin
Комментарии:
1. @WilliamPursell Нет ли способа использовать оба?
2. Мне не ясно, чего вы хотите. Вам нужно количество файлов в каталоге, или сумма размеров файлов в каталоге, или диск, используемый всеми файлами в (и ниже?) каталог.
3. Но, вероятно, вы просто ищете
find /usr -name bin -exec du {} ;
Ответ №1:
Следующий oneliner выводит каталоги и их общий размер файлов. -c
Аргумент выдает общее количество файлов внутри.
$ find /usr -type d -name bin -exec du -shc {} ;
104K /usr/src/gcc/contrib/reghunt/bin
67M /usr/bin
8.4M /usr/local/bin
75M total
Комментарии:
1. Это именно то, что я искал, огромное вам спасибо! Однако, что делает часть -type d?
2. @hackerNuB ограничивает выбор каталогами, гарантирует, что вы учитываете не файл bin, а только содержимое каталогов bin
3. @neau Я думаю, вам следует завершить команду
вместо
;
, чтобыfind
вызыватьdu
один раз, а не один раз для каждого найденного каталога. Это сделало бы вычисленную сумму, по крайней мере, намного более полезной.4. @Aaron, вы правы, спасибо за информацию! Я отредактировал свой первоначальный комментарий.
5. @Aaron Да, это сработало как шарм! Я также попытался удалить аргумент -s, но я не мог понять, что он сделал?
Ответ №2:
find /usr -type d -name "bin" -exec du {} ;
Комментарии:
1. в этом случае
;
может быть изменено на, чтобы ограничить количество порожденных процессов