Perl для системного администрирования


Обход файловой системы при помощи модуля File::Find - часть 10


if (keys %doto)! print

"Следующие файлы, скорее, всего, можно получить, если вновь

$path =" s/~$homedir/"/; tf изменяем путь, чтобы

tt вывод был аккуратнее print "$path ($doto{$path} байт)";

}

print "\Они занимают ".&BytesToMeg($tempsize)."MB в сумме."; $tempsize=0; }

sub BytesToMegl # преобразуем размер в байтах в формат ХХХМВ

return sprintfCl%.2f,($_[0]/1024000)); }

Прежде чем закончить этот разговор, надо заметить, что предыдущий пример можно расширять множеством способов. Пределов для программ такого типа просто не существует. Вот несколько идей:

  • Используйте более сложные структуры данных для хранения расширений производных файлов и найденных файлов. Приведенный выше код был написан с расчетом на то, чтобы его было легко читать людям, не очень хорошо разбирающимся со структурами данных в Perl. В нем используются повторяющиеся фрагменты и его довольно тяжело расширить, если в этом появится необходимость. В идеале было бы неплохо, чтобы все расширения производных файлов не были связаны со специальными хэшами (например %tex) в коде.
  • Ищите каталоги, в которых веб-броузеры кэшируют страницы (это очень распространенный источник потерянного пространства на диске).
  • Предложите пользователю удалить найденные файлы. Для удаления файлов используйте оператор unlink() и подпрограмму rmpath из модуля File: :Path.
  • Больше анализируйте файлы, вместо того чтобы строить предположения по их именам.




Начало  Назад  Вперед