Як перейменувати файл у терміналі Linux: повний посібник для початківців і професіоналів
Перейменування файлів є однією з найбільш фундаментальних задач в будь-якій операційній системі — а в Linux це стає виключно потужним, коли виконується безпосередньо з терміналу. Чи потрібно вам змінити одну назву файлу або масово перейменувати тисячі файлів, використовуючи складні шаблони, оволодіння перейменуванням файлів у Linux є важливою навичкою для розробників, системних адміністраторів та інженерів DevOps.
Від організації активів проекту до автоматизації очищення журналів та підготовки артефактів розгортання, знання правильних інструментів та методик заощадить вам значний час, зменшить людські помилки та розблокує справжню автоматизацію в масштабі.
Чому перейменовувати файли з терміналу Linux?
Перш ніж переходити до команд, варто зрозуміти, чому термінальний підхід переважають над графічними файловими менеджерами в багатьох випадках:
- Організація файлів за датою, типом, проектом або конвенцією найменування
- Автоматизація очищення ротованих логів, тимчасових даних або архівів резервних копій
- Стандартизація імен файлів для скриптів, розгортань або інтеграцій API
- Попередня обробка наборів даних у конвеєрах розробки, дослідження або науки про дані
- Інтеграція в CI/CD робочі процеси, конвеєри обробки зображень або системи контролю версій
Незалежно від того, чи ви розробник, який перейменовує тисячі файлів зображень, системний адміністратор, який очищує ротовані логи на сервері VPS Hosting, або інженер DevOps, який готує артефакти збірки до розгортання — наведені нижче методи зроблять ваш робочий процес значно більш ефективним.
Метод 1: Базове перейменування файлів за допомогою mv
Команда mv (move) — це стандартна вбудована утиліта Linux для перейменування файлів. Вона не потребує додаткової установки та працює на кожному дистрибутиві Linux.
Синтаксис
mv old_filename.txt new_filename.txtЩо може робити mv
| Завдання | Приклад команди |
|---|---|
| Перейменувати файл на місці | mv report.txt final_report.txt |
| Перемістити файл в іншу папку | mv report.txt /home/user/docs/ |
| Перейменувати та перемістити одночасно | mv report.txt ../archive/final_report.txt |
Практичний приклад
mv file.txt ../archive/renamed_file.txtЦя одна команда перейменовує file.txt на renamed_file.txt та переміщує його в папку ../archive/ за один крок.
> Важливо: На відміну від деяких операційних систем, Linux не попереджає вас, якщо файл призначення вже існує. Оригінальний файл буде мовчки перезаписаний. Використовуйте прапор -i (інтерактивний), щоб отримати запит на підтвердження:
mv -i old_filename.txt new_filename.txtМетод 2: Пакетне перейменування з rename (на основі Perl)
Для перейменування кількох файлів одночасно утиліта rename на основі Perl є найпотужнішим і найгнучкішим доступним інструментом. Вона використовує регулярні вирази, сумісні з Perl (PCRE), надаючи вам точний контроль над складними схемами перейменування.
Встановлення
# Debian / Ubuntu
sudo apt install rename
# RHEL / Fedora / CentOS
sudo dnf install prenameБазовий синтаксис
rename 's/old_pattern/new_pattern/' *.txtЦе перейменовує всі файли .txt у поточній директорії, замінюючи кожне входження old_pattern на new_pattern у назві файлу.
Поширені випадки використання rename
| Мета | Команда |
|---|---|
Додати префікс до всіх файлів .jpg | rename 's/^/IMG_/' *.jpg |
Видалити розширення .bak з назв файлів | rename 's/.bak$//' *.bak |
Перетворити .JPG на малі літери .jpg | rename 's/.JPG$/.jpg/i' *.JPG |
| Замінити пробіли на підкреслення | rename 's/ /_/g' * |
| Додати числовий суфікс за шаблоном | rename 's/file/file_v2/' *.txt |
Пробний запуск перед виконанням
Це, мабуть, найважливіша найкраща практика при пакетному перейменуванні. Використовуйте прапор -n для попереднього перегляду змін без фактичного змінення будь-яких файлів:
rename -n 's/ /_/g' *Результат покаже точно, що буде перейменовано, дозволяючи вам перевірити правильність шаблону перед виконанням операції.
Метод 3: Пакетне перейменування з mmv
Утиліта mmv (масове переміщення) забезпечує підхід на основі шаблонів для перейменування кількох файлів за допомогою синтаксису підстановки замість регулярних виразів. Це трохи менш гнучко, ніж rename, але легше читається для простіших завдань.
Встановлення
sudo apt install mmvПриклад використання
mmv "*.jpg" "photo_#1.jpg"Це перейменовує кожен файл .jpg у поточному каталозі, додаючи photo_ на початок кожної назви файлу. Заповнювач #1 захоплює збіг підстановки з вихідного шаблону.
Метод 4: Рекурсивне перейменування з find + mv + Bash
Для складної логіки перейменування, яка охоплює вкладені каталоги, поєднання find, mv та bash-скриптування дає вам максимальний контроль та гнучкість.
Приклад: Заміна тире на підкреслення у всіх .txt файлах (рекурсивно)
find . -type f -name "*.txt" | while read file; do
new=$(echo "$file" | sed 's/-/_/g')
mv "$file" "$new"
doneЯк це працює:
find . -type f -name "*.txt"— знаходить усі.txtфайли, починаючи з поточного каталогу, включаючи підкаталогиwhile read file— перебирає кожен результатsed 's/-/_/g'— генерує нову назву файлу, замінюючи всі тире на підкресленняmv "$file" "$new"— виконує фактичне перейменування
Цей підхід безпечний, дуже гнучкий і безперебійно працює в глибоко вкладених структурах каталогів — що робить його ідеальним для використання на Dedicated Servers, де ви можете керувати великими, складними ієрархіями файлів.
Метод 5: Перейменування файлів за допомогою for циклів
Для простих пакетних операцій у одній директорії простий for цикл у bash часто є найшвидшим рішенням.
Приклад: Додавання префіксу до всіх .log файлів
for f in *.log; do
mv "$f" "archived_$f"
doneПриклад: Додавання часової мітки до всіх .txt файлів
for f in *.txt; do
mv "$f" "$(date +%Y%m%d)_$f"
doneПриклад: Заміна підрядка в іменах файлів
for f in *report*; do
mv "$f" "${f/report/summary}"
doneСинтаксис ${variable/pattern/replacement} — це вбудована функція розширення параметрів bash — не потрібні зовнішні інструменти.
Порівняння: Який інструмент вам використовувати?
| Інструмент | Найкраще для | Підтримка Regex | Рекурсивний | Потребує встановлення |
|---|---|---|---|---|
mv | Перейменування одного файлу | Ні | Ні | Ні (вбудований) |
rename | Складне пакетне перейменування | Так (PCRE) | Ні (використовуйте з find) | Так |
mmv | Просте пакетне перейменування з підстановкою | Ні (підстановка) | Обмежено | Так |
find + mv | Рекурсивна, складна логіка | Через sed/awk | Так | Ні (вбудований) |
for цикл | Просте пакетне в одній папці | Через розширення bash | Ні | Ні (вбудований) |
Найкращі практики перейменування файлів у Linux
Дотримання цих рекомендацій захистить ваші дані та запобіжить дорогим помилкам, особливо при виконанні масових операцій перейменування на production серверах.
1. Завжди спочатку виконайте пробний запуск
Перед виконанням будь-якого пакетного перейменування переглядайте зміни:
rename -n 's/ /_/g' *Прапор -n показує, що *могло б* статися без внесення будь-яких фактичних змін. Це обов’язково для великомасштабних операцій.
2. Завжди цитуйте ваші змінні
Імена файлів можуть містити пробіли, спеціальні символи або переводи рядків. Завжди обгортайте змінні в подвійні лапки, щоб запобігти неочікуваному розділенню слів:
mv "$old_file" "$new_file"3. Створіть резервну копію перед масовими операціями
Перед перейменуванням тисяч файлів створіть резервну копію або снімок. Якщо ви працюєте в керованому хостинг-середовищі, перевірте, чи ваш провайдер пропонує автоматичні снімки. VPS плани AlexHost з cPanel включають легке управління резервними копіями безпосередньо з панелі керування.
4. Використовуйте контроль версій для файлів коду та конфігурації
Якщо ви перейменовуєте файли, які відстежуються в Git репозиторії, використовуйте git mv замість простого mv для збереження історії:
git mv old_script.sh new_script.sh5. Спочатку протестуйте на невеликій підмножині
При роботі з тисячами файлів протестуйте вашу команду перейменування на невеликому зразку каталогу перед запуском на повному наборі даних:
mkdir test_rename && cp *.jpg test_rename/ && cd test_rename
rename -n 's/IMG_/PHOTO_/' *.jpg6. Обережно обробляйте імена файлів з переводами рядків
При використанні find з pipes, імена файлів, що містять переводи рядків, можуть спричинити проблеми. Використовуйте -print0 та read -d '' для максимальної безпеки:
find . -type f -name "*.txt" -print0 | while IFS= read -r -d '' file; do
new=$(echo "$file" | sed 's/-/_/g')
mv "$file" "$new"
doneРеальні приклади використання
Стандартизація назв файлів журналу на сервері
Системні адміністратори, які керують ротацією журналів на сервері Linux, часто потребують перейменування архівованих журналів для дотримання послідовної конвенції найменування:
for f in /var/log/nginx/*.log.*; do
mv "$f" "${f/access/nginx_access}"
doneПідготовка графічних ресурсів для веб-додатку
Розробники, які розгортають веб-додаток на Спільному веб-хостингу, часто потребують нормалізації назв файлів зображень перед завантаженням:
# Convert all image filenames to lowercase and replace spaces with hyphens
rename 's/ /-/g' *.jpg *.png *.gif
rename 'y/A-Z/a-z/' *.jpg *.png *.gifМасове перейменування файлів для міграції домену
При міграції веб-сайту на новий домен і реструктуризації контенту вам може знадобитися оновити сотні файлів конфігурації або шаблонів. У поєднанні з належною реєстрацією домену та керуванням DNS, чиста структура файлів робить міграції набагато гладшими:
find . -type f -name "*.conf" | while read file; do
new=$(echo "$file" | sed 's/olddomain/newdomain/g')
mv "$file" "$new"
doneЧасто задавані питання
Чи можу я скасувати операцію перейменування в Linux?
Linux не має вбудованої функції скасування для команд терміналу. Саме тому пробні запуски та резервні копії критично важливі. Якщо ви використовуєте Git, git mv операції можна скасувати за допомогою git checkout.
Яка різниця між mv та rename?
mv — це вбудована утиліта Unix, призначена для переміщення та перейменування окремих файлів. rename — це інструмент на основі Perl, спеціально розроблений для масового перейменування за допомогою регулярних виразів. Для окремих файлів використовуйте mv. Для масових операцій з шаблонами використовуйте rename.
Чи rename працює однаково на всіх дистрибутивах Linux?
Існує дві поширені версії rename: версія на основі Perl (поширена на Debian/Ubuntu) та простіша версія на основі C (поширена на деяких системах на основі RHEL). Версія Perl підтримує повні регулярні вирази; версія C використовує простішу заміну рядків. Завжди перевіряйте, яка версія встановлена, за допомогою rename --version.
Як перейменувати файли з пробілами в їхніх назвах?
Завжди беріть у лапки назви файлів та змінні:
mv "my old file.txt" "my_new_file.txt"Або використовуйте rename з глобальною заміною:
rename 's/ /_/g' *Висновок
Перейменування файлів у терміналі Linux — це навичка, яка масштабується від простих одноразових змін до повністю автоматизованих пакетних операцій на тисячах файлів. Основні інструменти для опанування:
mv— для швидких, індивідуальних перейменуваньrename— для потужних пакетних операцій на основі regexfind+mv— для рекурсивних робочих процесів у кількох каталогахforцикли — для простих, зрозумілих пакетних скриптів
Завжди переглядайте зміни за допомогою пробних запусків, беріть у лапки ваші змінні та створюйте резервні копії критичних даних перед виконанням масових операцій перейменування.
Якщо ви керуєте файлами на сервері Linux і шукаєте надійне, високопродуктивне середовище хостингу, дослідіть спектр рішень AlexHost — від VPS Hosting та Dedicated Servers до повністю керованих VPS Control Panels — все оптимізовано для Linux робочих навантажень.
на всіх хостингових послугах