Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu: Skills Rozpocznij
Sekcja
Dedykowane serwery Linux Serwery Wirtualne

Jak zmienić nazwę pliku w terminalu Linux: Kompletny przewodnik dla początkujących i zaawansowanych użytkowników

Zmiana nazwy plików to jedno z najbardziej fundamentalnych zadań w każdym systemie operacyjnym — a w Linux staje się niezwykle potężne, gdy jest wykonywane bezpośrednio z terminala. Niezależnie od tego, czy musisz zmienić nazwę pojedynczego pliku, czy zmieniać nazwy haseł tysięcy plików przy użyciu złożonych wzorców, opanowanie zmiany nazw plików w Linux jest niezbędną umiejętnością dla deweloperów, administratorów systemów i inżynierów DevOps.

Od organizowania zasobów projektów, poprzez automatyzację czyszczenia dzienników, aż po przygotowywanie artefaktów wdrażania, znajomość odpowiednich narzędzi i technik zaoszczędzi Ci znacznie czasu, zmniejszy błędy ludzkie i odblokuje prawdziwą automatyzację na dużą skalę.

Dlaczego zmienić nazwy plików z terminala Linux?

Przed przejściem do poleceń warto zrozumieć, dlaczego podejście terminala jest preferowane w stosunku do graficznych menedżerów plików w wielu przypadkach:

  • Organizowanie plików według daty, typu, projektu lub konwencji nazewnictwa
  • Automatyzacja czyszczenia rotowanych dzienników, danych tymczasowych lub archiwów kopii zapasowych
  • Standaryzacja nazw plików dla skryptów, wdrożeń lub integracji API
  • Przetwarzanie wstępne zbiorów danych w potokach programistycznych, badawczych lub nauki o danych
  • Integracja z przepływami CI/CD, potokami przetwarzania obrazów lub systemami kontroli wersji

Niezależnie od tego, czy jesteś programistą zmieniającym nazwy tysięcy plików obrazów, administratorem systemu czyszczącym rotowane dzienniki na serwerze VPS Hosting, czy inżynierem DevOps przygotowującym artefakty kompilacji do wdrożenia — poniższe techniki sprawią, że Twój przepływ pracy będzie dramatycznie bardziej wydajny.

Metoda 1: Podstawowa zmiana nazwy pliku za pomocą mv

Polecenie mv (move) to standardowe, wbudowane narzędzie Linux do zmiany nazwy plików. Nie wymaga dodatkowej instalacji i działa na każdej dystrybucji Linux.

Składnia

mv old_filename.txt new_filename.txt

Co mv może robić

ZadaniePrzykład polecenia
Zmiana nazwy pliku w miejscumv report.txt final_report.txt
Przeniesienie pliku do innego katalogumv report.txt /home/user/docs/
Zmiana nazwy i przeniesienie jednocześniemv report.txt ../archive/final_report.txt

Praktyczny przykład

mv file.txt ../archive/renamed_file.txt

To pojedyncze polecenie zmienia nazwę file.txt na renamed_file.txt i przenosi go do katalogu ../archive/ w jednym kroku.

> Ważne: W przeciwieństwie do niektórych systemów operacyjnych, Linux nie ostrzega, jeśli plik docelowy już istnieje. Oryginalny plik zostanie dyskretnie nadpisany. Użyj flagi -i (interactive), aby wyświetlić monit o potwierdzenie:

mv -i old_filename.txt new_filename.txt

Metoda 2: Zmiana nazw zbiorczych za pomocą rename (oparta na Perl)

Do zmiany nazw wielu plików jednocześnie narzędzie rename oparte na Perl jest najpotężniejszym i najbardziej elastycznym dostępnym narzędziem. Wykorzystuje wyrażenia regularne kompatybilne z Perl (PCRE), dając Ci precyzyjną kontrolę nad złożonymi wzorcami zmiany nazw.

Instalacja

# Debian / Ubuntu
sudo apt install rename

# RHEL / Fedora / CentOS
sudo dnf install prename

Podstawowa składnia

rename 's/old_pattern/new_pattern/' *.txt

To zmienia nazwy wszystkich plików .txt w bieżącym katalogu, zastępując każde wystąpienie old_pattern na new_pattern w nazwie pliku.

Typowe przypadki użycia rename

CelPolecenie
Dodaj prefiks do wszystkich plików .jpgrename 's/^/IMG_/' *.jpg
Usuń rozszerzenie .bak z nazw plikówrename 's/.bak$//' *.bak
Konwertuj .JPG na małe litery .jpgrename 's/.JPG$/.jpg/i' *.JPG
Zastąp spacje podkreśleniamirename 's/ /_/g' *
Dodaj wzorzec sufiksu numerycznegorename 's/file/file_v2/' *.txt

Próbny przebieg przed wykonaniem

To jest prawdopodobnie najważniejsza najlepsza praktyka podczas zmiany nazw zbiorczych. Użyj flagi -n aby wyświetlić podgląd zmian bez faktycznej modyfikacji jakichkolwiek plików:

rename -n 's/ /_/g' *

Dane wyjściowe będą pokazywać dokładnie, co byłoby zmienione, pozwalając Ci zweryfikować, czy wzorzec jest poprawny przed zatwierdzeniem operacji.

Metoda 3: Zmiana nazw zbiorczych za pomocą mmv

Narzędzie mmv (mass move) zapewnia podejście oparte na wzorcach do zmiany nazw wielu plików przy użyciu składni symboli wieloznacznych zamiast wyrażeń regularnych. Jest nieco mniej elastyczne niż rename, ale łatwiejsze do czytania w przypadku prostszych zadań.

Instalacja

sudo apt install mmv

Przykład użycia

mmv "*.jpg" "photo_#1.jpg"

To zmienia nazwy każdego pliku .jpg w bieżącym katalogu, dodając photo_ na początku każdej nazwy pliku. Symbol zastępczy #1 przechwytuje dopasowanie symbolu wieloznacznego ze wzorca źródłowego.

Metoda 4: Rekurencyjne Zmiana Nazw z find + mv + Bash

W przypadku złożonej logiki zmiany nazw, która obejmuje zagnieżdżone katalogi, połączenie find, mv i skryptów bash daje maksymalną kontrolę i elastyczność.

Przykład: Zamiana Myślników na Podkreślenia we Wszystkich Plikach .txt (Rekurencyjnie)

find . -type f -name "*.txt" | while read file; do
    new=$(echo "$file" | sed 's/-/_/g')
    mv "$file" "$new"
done

Jak to działa:

  1. find . -type f -name "*.txt" — lokalizuje wszystkie pliki .txt zaczynając od bieżącego katalogu, łącznie z podkatalogami
  2. while read file — iteruje po każdym wyniku
  3. sed 's/-/_/g' — generuje nową nazwę pliku, zamieniając wszystkie myślniki na podkreślenia
  4. mv "$file" "$new" — wykonuje rzeczywistą zmianę nazwy

To podejście jest bezpieczne, wysoce elastyczne i bezproblemowo działa w głębokich strukturach katalogów zagnieżdżonych — co czyni je idealnymi do użytku na Serwerach Dedykowanych, gdzie możesz zarządzać dużymi, złożonymi hierarchiami plików.

Metoda 5: Zmiana nazw plików za pomocą pętli for

W przypadku prostych operacji wsadowych w jednym katalogu, prosta pętla for w bash jest często najszybszym rozwiązaniem.

Przykład: Dodaj prefiks do wszystkich plików .log

for f in *.log; do
    mv "$f" "archived_$f"
done

Przykład: Dodaj znacznik czasu do wszystkich plików .txt

for f in *.txt; do
    mv "$f" "$(date +%Y%m%d)_$f"
done

Przykład: Zamień podciąg w nazwach plików

for f in *report*; do
    mv "$f" "${f/report/summary}"
done

Składnia ${variable/pattern/replacement} jest natywną funkcją rozszerzenia parametrów bash — nie są wymagane żadne narzędzia zewnętrzne.

Porównanie: Które narzędzie powinieneś użyć?

NarzędzieNajlepsze doObsługa RegexRekurencyjneWymaga instalacji
mvZmiana nazwy pojedynczego plikuNieNieNie (wbudowane)
renameZłożone zmiany nazw zbiorczychTak (PCRE)Nie (użyj z find)Tak
mmvProste zmiany nazw zbiorczych ze znakami wieloznacznychNie (znaki wieloznaczne)OgraniczoneTak
find + mvRekurencyjne, złożona logikaVia sed/awkTakNie (wbudowane)
for loopProste zmiany zbiorcze w jednym kataloguVia bash expansionNieNie (wbudowane)

Best Practices for Renaming Files in Linux

Postępowanie zgodnie z tymi wytycznymi będzie chronić Twoje dane i zapobiegać kosztownym błędom, szczególnie podczas wykonywania masowych operacji zmiany nazwy na serwerach produkcyjnych.

1. Zawsze najpierw wykonaj próbny przebieg

Przed wykonaniem jakiejkolwiek zmiany nazwy wsadowej, podgląd zmian:

rename -n 's/ /_/g' *

Flaga -n pokazuje, co *by się stało* bez wprowadzania jakichkolwiek rzeczywistych zmian. Jest to niezbędne dla operacji na dużą skalę.

2. Zawsze cytuj swoje zmienne

Nazwy plików mogą zawierać spacje, znaki specjalne lub znaki nowego wiersza. Zawsze zawijaj zmienne w cudzysłów, aby zapobiec nieoczekiwanym podziałom wyrazów:

mv "$old_file" "$new_file"

3. Utwórz kopię zapasową przed operacjami zbiorczymi

Przed zmianą nazwy tysięcy plików utwórz kopię zapasową lub migawkę. Jeśli pracujesz w zarządzanym środowisku hostingowym, sprawdź, czy Twój dostawca oferuje automatyczne migawki. Plany VPS z cPanel AlexHost obejmują łatwe zarządzanie kopiami zapasowymi bezpośrednio z panelu sterowania.

4. Użyj kontroli wersji dla plików kodu i konfiguracji

Jeśli zmieniasz nazwy plików śledzonych w repozytorium Git, użyj git mv zamiast zwykłego mv aby zachować historię:

git mv old_script.sh new_script.sh

5. Najpierw przetestuj na małym podzbiorze

Pracując z tysiącami plików, przetestuj polecenie zmiany nazwy na małym przykładowym katalogu przed uruchomieniem go na pełnym zestawie danych:

mkdir test_rename && cp *.jpg test_rename/ && cd test_rename
rename -n 's/IMG_/PHOTO_/' *.jpg

6. Ostrożnie obsługuj nazwy plików ze znakami nowego wiersza

Używając find z rurami, nazwy plików zawierające znaki nowego wiersza mogą powodować problemy. Użyj -print0 i read -d '' dla maksymalnego bezpieczeństwa:

find . -type f -name "*.txt" -print0 | while IFS= read -r -d '' file; do
    new=$(echo "$file" | sed 's/-/_/g')
    mv "$file" "$new"
done

Rzeczywiste przypadki użycia

Standaryzacja nazw plików dziennika na serwerze

Administratorzy systemów zarządzający rotacją dzienników na serwerze Linux często muszą zmienić nazwy zarchiwizowanych dzienników, aby były zgodne z konsekwentną konwencją nazewnictwa:

for f in /var/log/nginx/*.log.*; do
    mv "$f" "${f/access/nginx_access}"
done

Przygotowanie zasobów obrazów dla aplikacji internetowej

Deweloperzy wdrażający aplikację internetową na Hosting współdzielony często muszą znormalizować nazwy plików obrazów przed przesłaniem:

# 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

Zbiorcze zmiana nazw plików podczas migracji domeny

Podczas migracji witryny internetowej do nowej domeny i restrukturyzacji zawartości może być konieczne zaktualizowanie setek plików konfiguracyjnych lub szablonów. W połączeniu z prawidłową Rejestracja domeny i zarządzaniem DNS, czysta struktura plików sprawia, że migracje przebiegają znacznie sprawniej:

find . -type f -name "*.conf" | while read file; do
    new=$(echo "$file" | sed 's/olddomain/newdomain/g')
    mv "$file" "$new"
done

Często Zadawane Pytania

Czy mogę cofnąć operację zmiany nazwy w Linux?

Linux nie ma natywnej funkcji cofania dla poleceń terminalowych. Dlatego właśnie suche uruchomienia i kopie zapasowe są krytyczne. Jeśli używasz Git, git mv operacje można cofnąć za pomocą git checkout.

Jaka jest różnica między mv a rename?

mv to wbudowane narzędzie Unix przeznaczone do przenoszenia i zmiany nazwy poszczególnych plików. rename to narzędzie oparte na Perl, specjalnie zaprojektowane do zmiany nazw zbiorczych przy użyciu wyrażeń regularnych. W przypadku pojedynczych plików użyj mv. W przypadku operacji zbiorczych ze wzorcami użyj rename.

Czy rename działa tak samo na wszystkich dystrybucjach Linux?

Istnieją dwie popularne wersje rename: wersja oparta na Perl (popularna w Debian/Ubuntu) i prostsza wersja oparta na C (popularna w niektórych systemach opartych na RHEL). Wersja Perl obsługuje pełne wyrażenia regularne; wersja C używa prostszego podstawiania ciągów. Zawsze sprawdź, która wersja jest zainstalowana za pomocą rename --version.

Jak zmienić nazwy plików ze spacjami w ich nazwach?

Zawsze cytuj nazwy plików i zmienne:

mv "my old file.txt" "my_new_file.txt"

Lub użyj rename z globalnym podstawieniem:

rename 's/ /_/g' *

Podsumowanie

Zmiana nazw plików w terminalu Linux to umiejętność, która skaluje się od prostych jednorazowych zmian do w pełni zautomatyzowanych operacji wsadowych na tysiącach plików. Kluczowe narzędzia do opanowania to:

  • mv — do szybkich, indywidualnych zmian nazw
  • rename — do potężnych operacji wsadowych opartych na regex
  • find + mv — do rekurencyjnych przepływów pracy w wielu katalogach
  • for pętle — do prostych, czytelnych skryptów wsadowych

Zawsze podglądaj zmiany za pomocą przebiegów testowych, cytuj swoje zmienne i wykonaj kopię zapasową krytycznych danych przed wykonaniem operacji masowej zmiany nazwy.

Jeśli zarządzasz plikami na serwerze Linux i szukasz niezawodnego, wysokowydajnego środowiska hostingowego, zapoznaj się z ofertą rozwiązań AlexHost — od Hostingu VPS i Serwerów Dedykowanych po w pełni zarządzane Panele Kontrolne VPS — wszystkie zoptymalizowane dla obciążeń Linux.