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

Możesz również polubić…

Inna porada:
Jak w Rasbianie zablokować wygaszacz ekranu?