Як перейменувати файли в 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 renameCentOS/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
| Файловий менеджер | Середовище робочого столу | Підтримка масового перейменування |
|---|---|---|
| Nautilus | GNOME | Через контекстне меню або плагіни |
| Dolphin | KDE Plasma | Вбудований інструмент пакетного перейменування |
| Thunar | XFCE | Вбудована утиліта масового перейменування |
| Nemo | Cinnamon | Через контекстне меню |
Як перейменувати файл у графічному файловому менеджері
- Відкрийте файловий менеджер (Nautilus, Dolphin, Thunar тощо)
- Перейдіть до каталогу, що містить файл
- Клацніть правою кнопкою миші на файлі та виберіть Перейменувати
- Введіть нове ім’я файлу
- Натисніть Enter для підтвердження
Масове перейменування в Thunar
Thunar включає особливо потужний інструмент масового перейменування:
- Виберіть кілька файлів
- Перейдіть до Редагування → Перейменувати
- Виберіть шаблон перейменування (вставити дату, числову послідовність, пошук і заміну тощо)
- Перегляньте зміни та натисніть Перейменувати
Це ідеально підходить для фотографів, творців контенту та розробників, які працюють на локальних робочих станціях Linux.
Порівняння всіх методів перейменування файлів
| Метод | Найкраще для | Підтримка пакетного режиму | Підтримка Regex | Потребує встановлення |
|---|---|---|---|---|
mv | Перейменування окремих файлів | Ні | Ні | Ні (вбудований) |
rename | Пакетне перейменування на основі шаблонів | Так | Так (Perl) | Іноді |
find + mv | Багатокаталогове, на основі критеріїв | Так | Частково | Ні (вбудований) |
| Bash-скрипт | Автоматизовані, повторювані завдання | Так | Так | Ні |
| Графічний файловий менеджер | Візуальне, інтерактивне перейменування | Обмежено | Ні | Залежить від середовища робочого столу |
Найкращі практики безпечного перейменування файлів на серверах Linux
Незалежно від того, чи ви керуєте файлами на VPS з cPanel або на виділеному сервері без оболонки, дотримуйтесь цих найкращих практик, щоб уникнути дорогих помилок:
- Завжди переглядайте перед виконанням — Використовуйте
rename -nабоecho mvдля пробного запуску команд - Робіть резервні копії важливих файлів — Перед масовим перейменуванням створіть резервну копію:
cp -r /target/dir /backup/dir - Спочатку тестуйте на невеликій підмножині — Застосуйте команду перейменування до одного файлу або невеликої групи, перш ніж запускати її для тисяч файлів
- Використовуйте контроль версій — Якщо перейменовуєте файли вихідного коду, зафіксуйте поточний стан у Git перед продовженням
- Перевіряйте залежні процеси — Перейменування конфігураційних файлів, файлів журналів або веб-ресурсів може зламати запущені застосунки; завжди спочатку перевіряйте залежності
- Уникайте спеціальних символів — Імена файлів з пробілами,
&,*,?або!можуть спричиняти несподівану поведінку в shell-командах; за можливості очищуйте імена файлів - Журналюйте всі операції — На виробничих серверах завжди реєструйте операції перейменування для цілей аудиту та відкату
Поширені випадки використання у веб-хостингу та адмініструванні серверів
Перейменування файлів — це не просто завдання з підтримки порядку, воно має безпосередні наслідки для операцій веб-хостингу. Ось реальні сценарії, де ефективне перейменування файлів є критично важливим:
- Міграція веб-сайту — Перейменування PHP-файлів, конфігураційних файлів або каталогів ресурсів при переміщенні між хостинг-провайдерами
- Управління SSL-сертифікатами — Перейменування файлів сертифікатів відповідно до очікуваних угод про іменування при розгортанні SSL Сертифікатів на вашому сервері
- Розгортання конфігурацій електронної пошти — Перейменування файлів шаблонів і конфігураційних файлів при налаштуванні послуг Хостингу Електронної Пошти
- Ротація журналів — Автоматичне перейменування та архівування файлів журналів за розкладом за допомогою Bash-скриптів і cron-завдань
- Міграція доменів — Перейменування кореневих каталогів документів і файлів конфігурації віртуальних хостів при управлінні Реєстрацією Доменів та змінами DNS
Висновок
Linux надає багатий набір інструментів для перейменування файлів, кожен з яких підходить для різних сценаріїв і рівнів навичок:
mv— ваш основний інструмент для швидкого перейменування окремих файлів без додаткових залежностейrenameвідмінно підходить для пакетного перейменування на основі шаблонів з використанням потужних регулярних виразів Perlfind+mvпропонує найбільшу гнучкість для багатокаталогового та критеріального перейменування- Bash-скрипти забезпечують автоматизацію, повторюваність і обробку помилок для виробничих середовищ
- Графічні файлові менеджери пропонують доступний, візуальний підхід для користувачів настільних систем
Опанування цих технік зробить вас більш ефективним адміністратором Linux, незалежно від того, чи ви керуєте особистим проектом або підтримуєте інфраструктуру корпоративного рівня. Головне — вибрати правильний інструмент для поставленого завдання — і завжди тестувати перед виконанням у живому середовищі.
*Шукаєте надійне середовище хостингу Linux для практики та розгортання ваших проектів? Ознайомтеся з планами VPS Хостингу від AlexHost — повний root-доступ, SSD-сховище та цілодобова технічна підтримка — все необхідне для впевненого запуску робочих навантажень Linux.*
