🢂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:
- Tworzenie kopii zapasowych: Skrypt sprawdza, czy katalog na kopie zapasowe (tutaj nazwany
backup
) istnieje. Jeśli nie, tworzy go. - Tworzenie kopii plików: Przed zmianą nazw, każdy plik jest kopiowany do katalogu
backup
. - 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:
- 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.
- 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.
- 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.
- 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:
- Skopiuj powyższy skrypt do pliku, na przykład
polskieznaki.sh
w katalogu z plikami. - Upewnij się, że masz uprawnienia do wykonania skryptu:
chmod +x polskieznaki.sh
. - 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