-4

Список, по одному, всех файлов размером более 100 КБ в дереве каталогов /home /username. Дайте пользователю возможность удалить или сжать файл, а затем перейти к отображению следующего. Запишите в лог-файл имена всех удаленных файлов и время удаления.

Может ли кто-нибудь помочь мне решить это?

1 ответ1

1

Вот некоторый (довольно неэффективный) псевдокод, чтобы вы начали:

for filename in (recurse through all files)
  skip if size(filename) < 100K
  display filename
  response =  ask user what they want to do
  if response == "delete"
    delete filename
    write filename + current time to logfile
  else if response == "compress"
    compress filename

Это неэффективно, потому что он будет проходить через каждый файл, даже если он меньше, чем 100K. Оптимизация с помощью find вместо цикла for будет для вас упражнением.

Теперь, с помощью Bash, вы можете легко просматривать файлы, установив shopt -s globstar и shopt -s nullglob , а затем используя **/*:

for file in /home/username/**/*; do
  echo "$file"
done

В остальном это действительно простой сценарий Bash. Выполняя веб-поиск примеров команд ("получить ввод от пользователя", "записать в файл", "сжать файл"), вы найдете множество ресурсов в Интернете.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .