🢂Skrypt zmieniający masowo nazwy plików w konsoli

W tym wpisie przedstawiam praktyczny skrypt bash, który automatycznie tworzy kopie zapasowe plików, a następnie standaryzuje ich nazwy w systemie Linux.

W zarządzaniu plikami na systemach Linux, szczególnie przy pracy z dużymi ilościami danych, istotne jest utrzymanie porządku i standaryzacji w nazwach plików. Niezależnie od tego, czy organizujesz swoje zasoby, czy przygotowujesz pliki do dalszego przetwarzania, jednolity format nazw znacznie ułatwia pracę. W tym wpisie pokażę, jak za pomocą prostego skryptu w bashu możesz automatycznie zmieniać nazwy plików, zamieniając wielkie litery na małe, polskie znaki na ich międzynarodowe odpowiedniki oraz zastępując spacje podkreślnikami. To praktyczne rozwiązanie pomoże Ci usprawnić zarządzanie plikami i uniknąć problemów związanych z niespójnymi nazwami.

Co ten skrypt robi?

Ten skrypt najpierw tworzy kopię zapasową każdego pliku w bieżącym katalogu, zapisując ją w folderze o nazwie backup, a następnie zmienia nazwy plików na małe litery, zamienia polskie znaki na ich odpowiedniki bez znaków diakrytycznych oraz zastępuje spacje podkreślnikami (_).

Działanie skryptu krok po kroku:

  1. Tworzenie kopii zapasowych: Skrypt sprawdza, czy katalog na kopie zapasowe (tutaj nazwany backup) istnieje. Jeśli nie, tworzy go.
  2. Tworzenie kopii plików: Przed zmianą nazw, każdy plik jest kopiowany do katalogu backup.
  3. Zmiana nazw plików: Następnie nazwy plików są zmieniane zgodnie z wcześniejszymi zasadami (na małe litery, zamiana polskich znaków, zamiana spacji na podkreślniki).

Ten skrypt zapewnia, że przed dokonaniem jakichkolwiek zmian w nazwach plików, ich kopie są bezpiecznie przechowywane w folderze backup.

Nazwy plików a SEO

Taki skrypt może być przydatny w SEO (Search Engine Optimization) z kilku powodów:

  1. Spójność i czytelność URL-i: W SEO ważne jest, aby adresy URL były czytelne i zrozumiałe zarówno dla użytkowników, jak i dla wyszukiwarek. Zamiana spacji na podkreślniki oraz usunięcie polskich znaków diakrytycznych pomaga tworzyć bardziej przyjazne URL-e, które są łatwiejsze do indeksowania przez wyszukiwarki.
  2. Unikanie problemów technicznych: Niektóre serwery i systemy zarządzania treścią mogą mieć problemy z obsługą plików zawierających spacje lub znaki diakrytyczne, co może prowadzić do błędów w indeksowaniu stron lub zasobów. Skrypt ten zapobiega takim problemom, zapewniając, że nazwy plików są zgodne z najlepszymi praktykami.
  3. Optymalizacja pod kątem wyszukiwarek: Wyszukiwarki preferują adresy URL, które są proste, zrozumiałe i dobrze opisują zawartość strony. Konwersja nazw plików na małe litery oraz eliminacja nietypowych znaków poprawia przejrzystość i potencjalną widoczność zasobów w wynikach wyszukiwania.
  4. Zarządzanie plikami multimedialnymi: Jeśli skrypt jest używany do przetwarzania plików multimedialnych, takich jak obrazy, filmy czy dokumenty, poprawnie sformatowane nazwy mogą poprawić ich pozycjonowanie w wynikach wyszukiwania obrazów i plików, co zwiększa szansę na większy ruch organiczny.

Wszystko to sprawia, że taki skrypt może wspiera optymalizację techniczną strony, co ma bezpośredni wpływ na SEO.

Instrukcja użycia:

  1. Skopiuj powyższy skrypt do pliku, na przykład polskieznaki.sh w katalogu z plikami.
  2. Upewnij się, że masz uprawnienia do wykonania skryptu: chmod +x polskieznaki.sh.
  3. Uruchom skrypt: ./polskieznaki.sh.

lub jednym poleceniem chmod +x polskieznaki.sh && ./polskieznaki.sh Oczywiście dostosuj zmienne do swoich potrzeb :)

Kod skryptu

#!/bin/bash

# Określ nazwę katalogu na kopie zapasowe
backup_dir="backup"

# Sprawdź, czy katalog istnieje, jeśli nie, utwórz go
if [ ! -d "$backup_dir" ]; then
  mkdir "$backup_dir"
fi

for file in *; do
  if [ -f "$file" ]; then
    # Skopiuj oryginalny plik do katalogu kopii zapasowych
    cp "$file" "$backup_dir/"

    # Konwertuj nazwę pliku na małe litery, zamień polskie znaki oraz spacje na podkreślniki
    new_name=$(echo "$file" | iconv -f utf-8 -t ascii//TRANSLIT | tr 'A-Z -' 'a-z__')

    # Zmień nazwę pliku, jeśli nowa nazwa jest inna od oryginalnej
    if [ "$file" != "$new_name" ]; then
      mv "$file" "$new_name"
    fi
  fi
done