15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати
30.10.2024

Як перейменувати файли в Linux: повний посібник з mv, rename, find та Bash-скриптів

Перейменування файлів у Linux є одним із найпоширеніших адміністративних завдань, з якими вам доведеться стикатися — незалежно від того, чи ви керуєте одним сервером, підтримуєте велике середовище веб-хостингу або автоматизуєте конвеєри розгортання. Linux пропонує кілька підходів до перейменування файлів: від простої команди mv до потужних утиліт пакетного перейменування та власних Bash-скриптів. Цей вичерпний посібник охоплює всі необхідні методи з практичними прикладами, які можна застосувати негайно.

Чому перейменування файлів важливе в адмініструванні Linux

На будь-якій системі на базі Linux — включаючи середовища VPS Хостингу, виділені сервери або акаунти спільного хостингу — правильна організація файлів безпосередньо впливає на продуктивність системи, безпеку та зручність обслуговування. Неправильно налаштовані імена файлів можуть зламати веб-застосунки, порушити роботу cron-завдань і створити проблеми з правами доступу. Вміння ефективно та безпечно перейменовувати файли є фундаментальною навичкою для будь-якого системного адміністратора або розробника.

Метод 1: Перейменування файлів за допомогою команди mv

Команда mv (переміщення) є найбільш базовим і повсюдно доступним інструментом для перейменування файлів у Linux. Хоча її основне призначення — переміщення файлів і каталогів між розташуваннями, вона також є надзвичайно ефективним інструментом перейменування.

Базовий синтаксис

mv old_filename new_filename

Простий приклад перейменування файлу

Щоб перейменувати file1.txt на file2.txt в тому самому каталозі:

mv file1.txt file2.txt

Ця команда перейменовує файл на місці — копія не створюється, і додатковий дисковий простір не використовується. Операція є атомарною на більшості файлових систем Linux, що робить її безпечною навіть у виробничих середовищах.

Перейменування файлів між каталогами

Ви можете одночасно перейменувати та перемістити файл:

mv /var/www/html/old_config.php /var/www/html/config.php

Корисні прапорці mv

ПрапорецьОпис
-iЗапитує підтвердження перед перезаписом існуючого файлу
-nНіколи не перезаписує існуючий файл
-vДетальний вивід — показує, що було перейменовано
-bСтворює резервну копію файлу призначення, якщо він існує

Приклад з інтерактивним запитом:

mv -i old_filename.txt new_filename.txt

Приклад з детальним виводом:

mv -v report_draft.txt report_final.txt
# Output: 'report_draft.txt' -> 'report_final.txt'

Обмеження mv для пакетного перейменування

Хоча mv чудово підходить для перейменування окремих файлів, перейменування десятків або сотень файлів по одному стає непрактичним. Для пакетних операцій потрібні більш просунуті інструменти.

Метод 2: Пакетне перейменування файлів за допомогою команди rename

Команда rename — це потужна утиліта на основі Perl, розроблена спеціально для одночасного перейменування кількох файлів за допомогою регулярних виразів. Вона значно скорочує час, необхідний для складних завдань перейменування на основі шаблонів.

Встановлення rename

Залежно від вашого дистрибутива Linux, rename може бути не встановлено за замовчуванням.

Debian/Ubuntu:

sudo apt install rename

CentOS/RHEL/AlmaLinux:

sudo yum install prename

Перевірка встановлення:

rename --version

Базовий синтаксис

rename 's/old_pattern/new_pattern/' files

Тут використовується синтаксис регулярних виразів, сумісних з Perl (PCRE), що надає вам величезну гнучкість.

Приклад 1: Зміна розширень файлів

Перейменування всіх файлів .txt на .md:

rename 's/.txt$/.md/' *.txt

Розбір:

    s/ — команда заміни
    .txt$ — відповідає .txt в кінці імені файлу
    .md — замінює на .md
    *.txt — застосовується до всіх файлів .txt у поточному каталозі
    
    Приклад 2: Додавання префікса до кількох файлів
    Додати префікс new_ до всіх файлів .txt:
    rename 's/^/new_/' *.txt
    Це перетворює report.txt на new_report.txt, notes.txt на new_notes.txt тощо.
    Приклад 3: Додавання суфікса перед розширенням файлу
    Додати _backup перед розширенням .txt:
    rename 's/.txt$/_backup.txt/' *.txt
    Це перетворює config.txt на config_backup.txt.
    Приклад 4: Перетворення імен файлів на нижній регістр
    rename 's/[A-Z]/lc($&)/ge' *.txt
    Це особливо корисно при міграції файлів із систем Windows, де імена файлів нечутливі до регістру, на сервери Linux, де чутливість до регістру може спричиняти помилки застосунків.
    Приклад 5: Заміна пробілів на підкреслення
    rename 's/ /_/g' *
    Пробіли в іменах файлів можуть спричиняти проблеми в shell-скриптах і конфігураціях веб-сервера — ця команда усуває їх у всіх файлах поточного каталогу.
    Пробний запуск (попередній перегляд змін без виконання)
    Завжди використовуйте прапорець -n для попереднього перегляду того, що зробить rename, перш ніж застосовувати зміни:
    rename -n 's/.txt$/.md/' *.txt
    Це виводить заплановані перейменування без їх фактичного виконання — обов’язкова практика безпеки у виробничих середовищах.
    Метод 3: Перейменування файлів за допомогою find у поєднанні з mv
    Коли вам потрібно перейменувати файли в кількох каталогах або за складними критеріями — такими як вік файлу, розмір або власник — поєднання find з mv забезпечує найбільш гнучке рішення.
    Базовий синтаксис
    find /path -name "pattern" -exec bash -c 'mv "$1" "new_name"' -- {} ;
    Приклад 1: Рекурсивне перейменування всіх файлів .log на .txt
    find . -name "*.log" -exec bash -c 'mv "$1" "${1%.log}.txt"' -- {} ;
    Розбір:
    
    find . -name "*.log" — рекурсивно знаходить усі файли .log починаючи з поточного каталогу
    -exec bash -c '...' -- {} ; — виконує shell-команду для кожного знайденого файлу
    "${1%.log}.txt" — використовує розширення параметрів для видалення .log та додавання .txt

    Приклад 2: Перейменування файлів, змінених за останні 7 днів

    find /var/log -name "*.log" -mtime -7 -exec bash -c 'mv "$1" "${1%.log}_archive.log"' -- {} ;

    Це корисно для робочих процесів ротації та архівування журналів на серверах.

    Приклад 3: Перейменування файлів, що належать певному користувачу

    find /home -user john -name "*.conf" -exec bash -c 'mv "$1" "${1%.conf}.conf.bak"' -- {} ;

    Порада щодо продуктивності: використовуйте + замість ;

    При перейменуванні великої кількості файлів використання + в кінці -exec є більш ефективним, оскільки групує команди:

    find . -name "*.tmp" -exec bash -c 'for f; do mv "$f" "${f%.tmp}.bak"; done' _ {} +

    Метод 4: Перейменування файлів за допомогою Bash-скрипту

    Для повторюваних або масштабних завдань перейменування — наприклад, нічних пакетних завдань на Виділеному Сервері — власний Bash-скрипт забезпечує найбільший контроль, повторюваність і можливість аудиту.

    Покроково: Створення Bash-скрипту для перейменування файлів

    #### Крок 1: Створіть файл скрипту

    Використовуйте текстовий редактор для створення скрипту:

    nano rename_script.sh

    #### Крок 2: Напишіть скрипт

    #!/bin/bash
    
    # Script: rename_script.sh
    # Purpose: Rename all .txt files in the current directory to .md
    # Usage: ./rename_script.sh
    
    echo "Starting file rename operation..."
    
    for file in *.txt; do
        # Check if any .txt files exist
        if [ ! -e "$file" ]; then
            echo "No .txt files found in the current directory."
            exit 1
        fi
    
        new_name="${file%.txt}.md"
        mv -v "$file" "$new_name"
        echo "Renamed: $file -> $new_name"
    done
    
    echo "Rename operation complete."

    #### Крок 3: Зробіть скрипт виконуваним

    chmod +x rename_script.sh

    #### Крок 4: Запустіть скрипт

    ./rename_script.sh

    #### Крок 5: Перевірте зміни

    ls -la

    Розширений Bash-скрипт: Перейменування з журналюванням та обробкою помилок

    Для виробничих серверних середовищ завжди включайте журналювання та обробку помилок:

    #!/bin/bash
    
    LOG_FILE="/var/log/rename_operations.log"
    TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
    TARGET_DIR="${1:-.}"
    OLD_EXT="${2:-txt}"
    NEW_EXT="${3:-md}"
    
    echo "[$TIMESTAMP] Starting rename: .$OLD_EXT -> .$NEW_EXT in $TARGET_DIR" >> "$LOG_FILE"
    
    count=0
    errors=0
    
    for file in "$TARGET_DIR"/*."$OLD_EXT"; do
        if [ -f "$file" ]; then
            new_name="${file%.$OLD_EXT}.$NEW_EXT"
            if mv -v "$file" "$new_name" >> "$LOG_FILE" 2>&1; then
                ((count++))
            else
                echo "[$TIMESTAMP] ERROR: Failed to rename $file" >> "$LOG_FILE"
                ((errors++))
            fi
        fi
    done
    
    echo "[$TIMESTAMP] Done. Renamed: $count files. Errors: $errors" >> "$LOG_FILE"
    echo "Renamed $count files with $errors errors. See $LOG_FILE for details."

    Використання:

    ./rename_script.sh /var/www/html txt md

    Цей скрипт приймає цільовий каталог, старе розширення та нове розширення як аргументи — що робить його повністю придатним для повторного використання в різних проектах і середовищах.

    Метод 5: Перейменування файлів за допомогою графічного файлового менеджера (GUI)

    Для користувачів, які надають перевагу візуальному інтерфейсу — особливо на настільних дистрибутивах Linux — більшість графічних файлових менеджерів включають вбудовану функцію перейменування.

    Поширені файлові менеджери Linux

    Файловий менеджерСередовище робочого столуПідтримка масового перейменування
    NautilusGNOMEЧерез контекстне меню або плагіни
    DolphinKDE PlasmaВбудований інструмент пакетного перейменування
    ThunarXFCEВбудована утиліта масового перейменування
    NemoCinnamonЧерез контекстне меню

    Як перейменувати файл у графічному файловому менеджері

    1. Відкрийте файловий менеджер (Nautilus, Dolphin, Thunar тощо)
    2. Перейдіть до каталогу, що містить файл
    3. Клацніть правою кнопкою миші на файлі та виберіть Перейменувати
    4. Введіть нове ім’я файлу
    5. Натисніть Enter для підтвердження

    Масове перейменування в Thunar

    Thunar включає особливо потужний інструмент масового перейменування:

    1. Виберіть кілька файлів
    2. Перейдіть до Редагування → Перейменувати
    3. Виберіть шаблон перейменування (вставити дату, числову послідовність, пошук і заміну тощо)
    4. Перегляньте зміни та натисніть Перейменувати

    Це ідеально підходить для фотографів, творців контенту та розробників, які працюють на локальних робочих станціях Linux.

    Порівняння всіх методів перейменування файлів

    МетодНайкраще дляПідтримка пакетного режимуПідтримка RegexПотребує встановлення
    mvПерейменування окремих файлівНіНіНі (вбудований)
    renameПакетне перейменування на основі шаблонівТакТак (Perl)Іноді
    find + mvБагатокаталогове, на основі критеріївТакЧастковоНі (вбудований)
    Bash-скриптАвтоматизовані, повторювані завданняТакТакНі
    Графічний файловий менеджерВізуальне, інтерактивне перейменуванняОбмеженоНіЗалежить від середовища робочого столу

    Найкращі практики безпечного перейменування файлів на серверах Linux

    Незалежно від того, чи ви керуєте файлами на VPS з cPanel або на виділеному сервері без оболонки, дотримуйтесь цих найкращих практик, щоб уникнути дорогих помилок:

    1. Завжди переглядайте перед виконанням — Використовуйте rename -n або echo mv для пробного запуску команд
    2. Робіть резервні копії важливих файлів — Перед масовим перейменуванням створіть резервну копію: cp -r /target/dir /backup/dir
    3. Спочатку тестуйте на невеликій підмножині — Застосуйте команду перейменування до одного файлу або невеликої групи, перш ніж запускати її для тисяч файлів
    4. Використовуйте контроль версій — Якщо перейменовуєте файли вихідного коду, зафіксуйте поточний стан у Git перед продовженням
    5. Перевіряйте залежні процеси — Перейменування конфігураційних файлів, файлів журналів або веб-ресурсів може зламати запущені застосунки; завжди спочатку перевіряйте залежності
    6. Уникайте спеціальних символів — Імена файлів з пробілами, &, *, ? або ! можуть спричиняти несподівану поведінку в shell-командах; за можливості очищуйте імена файлів
    7. Журналюйте всі операції — На виробничих серверах завжди реєструйте операції перейменування для цілей аудиту та відкату

    Поширені випадки використання у веб-хостингу та адмініструванні серверів

    Перейменування файлів — це не просто завдання з підтримки порядку, воно має безпосередні наслідки для операцій веб-хостингу. Ось реальні сценарії, де ефективне перейменування файлів є критично важливим:

    • Міграція веб-сайту — Перейменування PHP-файлів, конфігураційних файлів або каталогів ресурсів при переміщенні між хостинг-провайдерами
    • Управління SSL-сертифікатами — Перейменування файлів сертифікатів відповідно до очікуваних угод про іменування при розгортанні SSL Сертифікатів на вашому сервері
    • Розгортання конфігурацій електронної пошти — Перейменування файлів шаблонів і конфігураційних файлів при налаштуванні послуг Хостингу Електронної Пошти
    • Ротація журналів — Автоматичне перейменування та архівування файлів журналів за розкладом за допомогою Bash-скриптів і cron-завдань
    • Міграція доменів — Перейменування кореневих каталогів документів і файлів конфігурації віртуальних хостів при управлінні Реєстрацією Доменів та змінами DNS

    Висновок

    Linux надає багатий набір інструментів для перейменування файлів, кожен з яких підходить для різних сценаріїв і рівнів навичок:

    • mv — ваш основний інструмент для швидкого перейменування окремих файлів без додаткових залежностей
    • rename відмінно підходить для пакетного перейменування на основі шаблонів з використанням потужних регулярних виразів Perl
    • find + mv пропонує найбільшу гнучкість для багатокаталогового та критеріального перейменування
    • Bash-скрипти забезпечують автоматизацію, повторюваність і обробку помилок для виробничих середовищ
    • Графічні файлові менеджери пропонують доступний, візуальний підхід для користувачів настільних систем

    Опанування цих технік зробить вас більш ефективним адміністратором Linux, незалежно від того, чи ви керуєте особистим проектом або підтримуєте інфраструктуру корпоративного рівня. Головне — вибрати правильний інструмент для поставленого завдання — і завжди тестувати перед виконанням у живому середовищі.

    *Шукаєте надійне середовище хостингу Linux для практики та розгортання ваших проектів? Ознайомтеся з планами VPS Хостингу від AlexHost — повний root-доступ, SSD-сховище та цілодобова технічна підтримка — все необхідне для впевненого запуску робочих навантажень Linux.*

    15%

    Збережіть 15% на всі хостинг-послуги

    Перевірте свої навички і отримайте Знижку на будь-який план хостингу

    Використовуй код:

    Skills
    Почати