masowa zmiana nazw plików i folderów (wraz z podfolderami)
Czasem istnieje potrzeba masowej zmiany nazw plików i folderów. Np. chodzi o usunięcie znaku spacji (biały znak) lub polskich znaków diakrytycznych. Przeważnie takie prace są wymagane na potrzeby www. Z racji na trudności z kodowaniem i ścieżkami (np. do obrazka) takie litery i symbole w nazwach plików obrazków mogą być problematyczne.
Istnieje prosta metoda na masową zmianę nazw plików i folderów. Wraz z podfolderami. Sposób może nie jest doskonały (wymaga dublowania aż do uzyskania pełnego efektu), jednak na pewno dużo lepsze to niż ręczne zmienianie tych znaków. Dodatkowo – wystarczy do niego jedynie konsola.
Ogólna zasada:
Nazwy plików i folderów zmieniamy wg zasady:
find . -exec rename 's/ó/o/' '{}' \;
Powyższa komenda zamieni wszystkie wystąpienia „ó” na „o”. Jednokrotne wywołanie tej komendy może nie być wystarczające. Należy tak długo ją ponawiać (poprzez wciśnięcie strzałki ↑) aby błędy typu:
find: `./Wizytówki': Nie ma takiego pliku ani katalogu
Przestały się pojawiać. Należy też w osobnym oknie przeglądarki plików (lub na osobnym terminalu za pomocą np. Midnight Commander) śledzić czy wszystkie podfoldery zostały zmienione. Lub wywołać komendę znajdującą taki plik:
find . -iname "*ó""
(zastosowanie flagi -iname w odróżnieniu od -name znajduje pliki bez względu na ich wielkość)
Przykłady:
Szablon komendy z zamianą „ó” na „o” możemy jak pisaliśmy dowolnie zmieniać. Np.
Zamiana „ł” na „l”:
find . -exec rename 's/ł/l/' '{}' \;
Zamiana białych znaków (spacja) na podkreślenie – tutaj użyjemy wyrażeń regularnych (Regex):
find . -exec rename 's/\s/_/' '{}' \;
Zamiana „ń” na „n” – tylko plików z pominięciem folderów:
find . -type f -exec rename 's/ń/n/' '{}' \;
Za każdym razem komendę należy ponawiać (poprzez wciśnięcie strzałki ↑) do uzyskania pełnego efektu. Ewentualne błędy – należy zignorować.
Szablon do zamiany wszystkich pl znaków diakrytycznych (uwaga! tylko dla małych liter):
find . -exec rename 's/ł/l/' '{}' \;
find . -exec rename 's/ń/n/' '{}' \;
find . -exec rename 's/ś/s/' '{}' \;
find . -exec rename 's/ą/a/' '{}' \;
find . -exec rename 's/ę/e/' '{}' \;
find . -exec rename 's/ż/z/' '{}' \;
find . -exec rename 's/ź/z/' '{}' \;
find . -exec rename 's/ć/c/' '{}' \;
find . -exec rename 's/ó/o/' '{}' \;
grafika: alphacoders.com

