Skip to content

Alveek/Safe-file-extension-mover

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Safe file extension mover — интерактивная bash-утилита для перемещения файлов по расширению в папку «For deletion».

Возможности

  • 🔍 Рекурсивное сканирование — находит все файлы в папке и подпапках
  • 🚫 Умный пропуск — автоматически игнорирует node_modules, .git и .a5c
  • 📊 Статистика по расширениям — показывает таблицу с количеством и размером файлов каждого типа, отсортированную по популярности
  • 🛡️ Безопасное перемещение — файлы не удаляются, а перемещаются в папку For deletion
  • 📄 Плоский список — все файлы кладутся в одну папку; при совпадении имён добавляется суффикс _1, _2 и т.д.
  • 👁️ Режим предпросмотра (--dry-run) — посмотреть, что будет перемещено, не делая изменений
  • 🔢 Множественный выбор — можно выбрать сразу несколько расширений через запятую
  • 🎨 Цветной вывод — с автоматическим отключением при перенаправлении в файл
  • 🔧 Портативность — работает на Linux и macOS, требует только bash 4+

Установка

# Скопируйте скрипт в удобное место
sudo cp file-cleanup.sh .usr/bin/file-cleanup
sudo chmod +x /usr/bin/file-cleanup

# Или используйте напрямую
chmod +x file-cleanup.sh
./file-cleanup.sh --help

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

Базовый сценарий

# Перейти в папку с видео-курсом
cd ~/Courses/AnotherWebDevCourse

# Запустить скрипт
./file-cleanup.sh

Скрипт покажет таблицу расширений, например:

#     Extension              Count      Total Size
──────────────────────────────────────────────
1     srt                    15         256 KB
2     mp4                    12         2.45 GB
3     pdf                    3          15 MB
4     txt                    2          2 KB

Введите номер или имя расширения (например, srt или 1), подтвердите операцию — и все .srt-файлы будут перемещены в папку For deletion плоским списком.

Можно выбрать сразу несколько расширений через запятую:

Enter extension index or name to move (comma-separated, or q to quit): srt,txt,1

Примеры команд

# Сканировать конкретную папку
./file-cleanup.sh ~/Downloads

# Режим предпросмотра (ничего не перемещает)
./file-cleanup.sh --dry-run ~/Videos

# Автоматический режим: сразу переместить .srt без вопросов
./file-cleanup.sh --ext srt --yes ~/Courses

# Сразу несколько расширений
./file-cleanup.sh --ext srt,txt,log ~/Downloads

# Своя папка для перемещения
./file-cleanup.sh --quarantine-dir "To Delete" ~/Desktop

Аргументы и флаги

Флаг Описание
DIRECTORY Целевая папка (по умолчанию: текущая)
-h, --help Показать справку
-v, --version Показать версию
-d, --dry-run Режим предпросмотра
-e, --ext EXTENSION(S) Сразу выбрать расширение(я), без интерактива (через запятую)
-y, --yes Авто-подтверждение (осторожно!)
-q, --quarantine-dir NAME Задать своё имя папки для перемещения

Обработка edge-cases

  • Пробелы и юникод в именах — корректно обрабатываются через find -print0
  • Симлинки — явно игнорируются
  • Файлы без расширения — отображаются как (no extension)
  • Скрытые файлы — участвуют в сканировании
  • Права доступа — при ошибке чтения выводится предупреждение, скрипт не падает
  • Коллизии имён папки — если папка For deletion уже существует, добавляется суффикс _1, _2 и т.д.
  • Коллизии имён файлов — при перемещении в плоскую папку файлы с одинаковыми именами переименовываются через _1, _2 и т.д.

Требования

  • bash 4.0+
  • find, stat, mv, date, awk (обычно входят в базовую поставку Linux/macOS)

Лицензия

MIT — свободное использование и модификация.

About

интерактивная bash-утилита для перемещения файлов по расширению во временную папку на удаление.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages