Этот скрипт демонстрирует, как запросить подтверждение пользователя перед удалением каждого файла, найденного в указанной директории.

Скрипт

#!/bin/bash

  # Определение параметров
  DIRECTORY="."
  PATTERN="*.txt"

  # Отображение списка файлов для подтверждения
  echo "Найденные файлы для удаления:"
  find "$DIRECTORY" -name "$PATTERN" -print
  read -p "Продолжить удаление? (y/n): " confirm

  if [[ "$confirm" == "y" || "$confirm" == "Y" ]]; then
    echo "Подтверждено, начинаем удаление..."

    find "$DIRECTORY" -name "$PATTERN" -print0 | while IFS= read -r -d $'\0' file; do
      read -p "Удалить '$file'? (y/n): " confirm_file

      if [[ "$confirm_file" == "y" || "$confirm_file" == "Y" ]]; then
        echo "Удаление: $file"
        rm -f "$file"
      else
        echo "Пропущено: $file"
      fi
    done

    echo "Удаление завершено."
  else
    echo "Удаление отменено."
  fi
  

Объяснение кода:

  • `DIRECTORY="."`, `PATTERN="*.txt"`: Определение директории и шаблона поиска.
  • `echo "Найденные файлы для удаления:"`: Отображение списка файлов, которые будут удалены.
  • `find "$DIRECTORY" -name "$PATTERN" -print`: Поиск файлов по шаблону и вывод списка на экран.
  • `read -p "Продолжить удаление? (y/n): " confirm`: Запрос подтверждения от пользователя на продолжение процесса.
  • `if [[ "$confirm" == "y" || "$confirm" == "Y" ]]`: Проверка ответа пользователя.
  • `find "$DIRECTORY" -name "$PATTERN" -print0 | while IFS= read -r -d $'\0' file; do ... done`: Цикл по каждому найденному файлу.
  • `read -p "Удалить '$file'? (y/n): " confirm_file`: Запрос подтверждения для каждого файла.
  • `if [[ "$confirm_file" == "y" || "$confirm_file" == "Y" ]]`: Проверка ответа пользователя для каждого файла.
  • `rm -f "$file"`: Удаление файла, если подтверждено.
  • `echo "Пропущено: $file"`: Сообщение, если файл пропущен.

Использование скрипта

Для запуска скрипта достаточно выполнить следующую команду:

./your_script_name.sh

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

Дополнительные соображения

  • Безопасность: Этот скрипт позволяет избежать случайного удаления файлов, но всегда будьте внимательны при работе с командами удаления.
  • Улучшения: Можно добавить возможность удаления файлов, не требуя подтверждения для каждого файла, но запрашивая подтверждение только для определенных файлов.
  • Обработка ошибок: Можно добавить обработку ошибок, например, при отсутствии прав на удаление файла.
  • Использование `xargs` (для продвинутых пользователей): Можно использовать `xargs` для передачи аргументов команде `rm` в пакетном режиме. Однако, будьте осторожны при использовании `xargs` с командами удаления, так как это может привести к неожиданным результатам.