rename

Zmienia nazwy wielu plików według wzorca lub wyrażenia.

rename to narzędzie do masowej zmiany nazw plików — zamiast klikać po jednym w menedżerze plików albo pisać pętlę z mv, podajesz jeden wzorzec i lecisz po setkach plików naraz. Najczęściej spotkasz wersję perlową (pakiet rename/prename na Debianie i Ubuntu), w której pierwszym argumentem jest pełnoprawne wyrażenie Perla — np. s/old/new/ — działające na nazwie każdego pliku. To czyni z rename małego scyzoryka do porządkowania bałaganu w katalogu.

Składnia i najważniejsze opcje

Podstawowa składnia wersji perlowej wygląda tak: rename [opcje] wyrażenie pliki...

  • -n — tryb próbny (dry run): wypisuje, co zostałoby przemianowane, ale niczego nie rusza. Twój najlepszy przyjaciel przed każdą akcją.
  • -v — verbose: pokazuje nazwy plików, które faktycznie zostały zmienione (stara → nowa).
  • -f — pozwala nadpisać istniejący plik docelowy (domyślnie rename tego nie zrobi).
  • -e wyrażenie — pozwala podać kod jako opcję; można użyć kilku -e po kolei.
  • Brak listy plików — nazwy zostaną wczytane ze standardowego wejścia, więc działa w parze z find i xargs.

Przykłady użycia

  • rename -n 's/\.jpeg$/.jpg/' *.jpeg — najpierw podgląd: jak zmieniłyby się rozszerzenia z .jpeg na .jpg. Zdejmij -n, żeby wykonać.
  • rename 's/ /_/g' *.txt — zamienia wszystkie spacje w nazwach na podkreślniki (flaga g = wszystkie wystąpienia).
  • rename 'y/A-Z/a-z/' * — sprowadza nazwy plików do małych liter (operator y/// = transliteracja).
  • rename 's/^/2026_/' *.csv — dodaje przedrostek 2026_ na początku każdej nazwy.
  • rename 's/(\d+)/sprintf("%03d",$1)/e' img*.png — uzupełnia numery zerami (img7img007); flaga e wykonuje prawą stronę jako kod.

Częste błędy i pułapki

Największa pułapka to dwie różne komendy o tej samej nazwie. Wersja perlowa bierze wyrażenie regularne, a wersja z pakietu util-linux (czasem dostępna jako rename.ul) ma zupełnie inną składnię: rename wyrażenie zamiennik pliki... i robi zwykłe podstawienie tekstu, bez regexów. Jeśli s/old/new/ nie działa, sprawdź rename --version — prawdopodobnie masz wariant util-linux. Tam przydadzą się -a (wszystkie wystąpienia), -l (ostatnie), -o (nie nadpisuj) i -n (próba).

Druga mina: rename nie tworzy katalogów. Jeśli wyrażenie wstawi / w nazwę, dostaniesz błąd lub plik wyląduje nie tam, gdzie myślisz. I zawsze, ale to zawsze, odpalaj najpierw z -n — przy * jeden zły regex potrafi przemianować pół katalogu.

Powiązane komendy: mv, find, mmv, basename.