Показать размер директорий из списка

Показать размер директорий из списка

06.07.2017 11:59:26 Просмотров 26 Источник

Столкнулся с такой задачей.

Дан список из имен директорий dir_list, которые нужно найти и удалить. Для отчетности требуется предварительно сохранить в файл список со следующими параметрами:

РАЗМЕР ИМЯ ВРЕМЯ_МОДИФИКАЦИИ

Пока что приходится в ручную редактировать вывод

~# while read dir; do find /library -maxdepth 1 -type d -name "$dir" -print0 | xargs -0 du -hs; done < dir_list

~# while read dir; do find /library -maxdepth 1 -type d -name "$dir" -printf "%f %c\n"; done < dir_list

Система Ubuntu GNU/Linux со стандартным набором утилит. Оболочка - bash. Объём поиска 20.0ТБ.

У вопроса есть решение - Посмотреть?

https://ru.stackoverflow.com/questions/688265/%d0%9f%d0%be%d0%ba%d0%b0%d0%b7%d0%b0%d1%82%d1%8c-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80-%d0%b4%d0%b8%d1%80%d0%b5%d0%ba%d1%82%d0%be%d1%80%d0%b8%d0%b9-%d0%b8%d0%b7-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0#comment1015611_688265
@0andriy размер занимаемый на диске.
https://ru.stackoverflow.com/questions/688265/%d0%9f%d0%be%d0%ba%d0%b0%d0%b7%d0%b0%d1%82%d1%8c-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80-%d0%b4%d0%b8%d1%80%d0%b5%d0%ba%d1%82%d0%be%d1%80%d0%b8%d0%b9-%d0%b8%d0%b7-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0#comment1015614_688265
Это не ответ на вопрос. Почему? Подумайте сами — отличное задание для немного более глубокого понимания об ФС и данных. А ответ на ваш вопрос фактически у меня в первом комментарии.
https://ru.stackoverflow.com/questions/688265/%d0%9f%d0%be%d0%ba%d0%b0%d0%b7%d0%b0%d1%82%d1%8c-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80-%d0%b4%d0%b8%d1%80%d0%b5%d0%ba%d1%82%d0%be%d1%80%d0%b8%d0%b9-%d0%b8%d0%b7-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0#comment1015623_688265
Дело в том, что нужна дополнительная информация в одном списке. Я прогоняю два поиска потом суммирую в редакторе.

Ответы - Показать размер директорий из списка / Показать размер директорий из списка

Является ответом!
aleksandr barakin

07.07.2017 02:20:23

вызов программ find/xargs здесь явно излишен.

обёртку в виде цикла можно представить примерно так (здесь report — файл с отчётом):

$ while read d; do dir="/library/$d"; ...; done < dir_list > report

а вместо двоеточия надо выполнить два действия:

  1. получение данных для отчёта. например, так:

    stat --printf="$(du -hs "$dir") %y\n" "$dir"
    
  2. собственно удаление каталога. например, так:

    rm -rf "$dir"
    

итого в одну строку:

$ while read d; do dir="/library/$d"; stat --printf="$(du -hs "$dir") %y\n" "$dir"; rm -rf "$dir"; done < dir_list > report

пример (каталоги намеренно содержат пробел в имени, для демонстрации: так тоже работает):

$ cat dir_list
a b
c d
$ while read d; do dir="/library/$d"; stat --printf="$(du -hs "$dir") %y\n" "$dir"; rm -rf "$dir"; done < dir_list > report
$ cat report 
4.0K    /library/a b 2017-07-07 01:53:55.109088360 +0300
4.0K    /library/c d 2017-07-07 02:09:00.533072146 +0300
https://ru.stackoverflow.com/questions/688265/%d0%9f%d0%be%d0%ba%d0%b0%d0%b7%d0%b0%d1%82%d1%8c-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80-%d0%b4%d0%b8%d1%80%d0%b5%d0%ba%d1%82%d0%be%d1%80%d0%b8%d0%b9-%d0%b8%d0%b7-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0/688298#comment1015626_688298
@alexander_barakin гляну завтра. find нужен так как dir_list содержит имена директорий, а не полные пути. они могут быть разбросанны по дереву где угодно.
https://ru.stackoverflow.com/questions/688265/%d0%9f%d0%be%d0%ba%d0%b0%d0%b7%d0%b0%d1%82%d1%8c-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80-%d0%b4%d0%b8%d1%80%d0%b5%d0%ba%d1%82%d0%be%d1%80%d0%b8%d0%b9-%d0%b8%d0%b7-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0/688298#comment1015627_688298
в примере у вас просматривается лишь непосредственное содержимое каталога /library. исходя из этой информации я и писал ответ.
https://ru.stackoverflow.com/questions/688265/%d0%9f%d0%be%d0%ba%d0%b0%d0%b7%d0%b0%d1%82%d1%8c-%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80-%d0%b4%d0%b8%d1%80%d0%b5%d0%ba%d1%82%d0%be%d1%80%d0%b8%d0%b9-%d0%b8%d0%b7-%d1%81%d0%bf%d0%b8%d1%81%d0%ba%d0%b0/688298#comment1016422_688298
@alexander_barakins за пункт 1. отдельное спасибо, думал форматирование подлерживает только % дироективы.
Закрыть X