Этот скрипт демонстрирует, как запросить подтверждение пользователя перед удалением каждого файла, найденного в указанной директории.
Скрипт
#!/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` с командами удаления, так как это может привести к неожиданным результатам.