Mam katalog z ~ 10 000 plików obrazów z zewnętrznego źródła.
Wiele nazw plików zawiera spacje i znaki interpunkcyjne, które nie są przyjazne DB lub Web. Chcę również dołączyć numer SKU na końcu każdej nazwy pliku (do celów księgowych). Wiele, jeśli nie większość nazw plików, zawiera również rozszerzone znaki łacińskie, które chcę zachować dla celów SEO (szczególnie, aby nazwy plików dokładnie reprezentowały zawartość pliku w Grafice Google)
Zrobiłem skrypt bash, który zmienia nazwy (kopiuje) wszystkie pliki do pożądanego rezultatu. Skrypt bash jest zapisywany w UTF-8. Po uruchomieniu pomija około 500 plików (nie można zapisać pliku ...).
Uruchomiłem w katalogu convmv -f UTF-8 -t UTF-8 i odkryłem, że 500 nazw plików nie jest zakodowanych w UTF-8 (convmv jest w stanie wykryć i zignorować nazwy plików już w UTF-8)
Czy istnieje prosty sposób, aby dowiedzieć się, jakiego kodowania języka używają obecnie?
Jedynym sposobem, w jaki udało mi się to rozgryźć, jest ustawienie kodowania terminala na UTF-8, a następnie iterowanie wszystkich prawdopodobnych kodowań kandydujących za pomocą funkcji convmv, aż wyświetli się przekonwertowana nazwa, która „wygląda dobrze”. Nie mam pewności, że wszystkie te 500 plików używają tego samego kodowania, więc musiałbym powtórzyć ten proces 500 razy. Chciałbym bardziej zautomatyzowaną metodę niż „wygląda dobrze” !!!
Przydatne może być przetestowanie bieżącego katalogu roboczego (python 2.7):
Wynik wygląda następująco:
Aby ponownie wyświetlić ścieżkę koryta z bieżącego katalogu, wytnij i wklej to do małego skryptu python:
źródło