próbuję to:Jak zmienić kodowanie w wielu plikach?
find . -exec iconv -f iso8859-2 -t utf-8 {} \;
ale wyjście idzie na ekranie, a nie do tego samego pliku. Jak to zrobić?
próbuję to:Jak zmienić kodowanie w wielu plikach?
find . -exec iconv -f iso8859-2 -t utf-8 {} \;
ale wyjście idzie na ekranie, a nie do tego samego pliku. Jak to zrobić?
Spróbuj tego:
find . -type f -print -exec iconv -f iso8859-2 -t utf-8 -o {}.converted {} \; -exec mv {}.converted {} \;
It użyje pliku tymczasowego z rozszerzeniem ".converted", a następnie przeniesie go do oryginalnej nazwy, więc zachowaj ostrożność, jeśli posiadasz pliki z końcówkami ".converted" (nie sądzę, że hav mi).
Również ten skrypt nie jest bezpieczne dla nazw zawierających spacje, więc dla większego bezpieczeństwa zalecana cudzysłów: „{}” zamiast {} i „{} .converted” zamiast {} .converted
przeczytać o enconv.
Jeśli trzeba konwertować do bieżącego kodowania terminala można to zrobić tak:
find . -exec enconv -L czech {}\;
Albo dokładnie to, czego chciał:
find . -exec enconv -L czech -x utf8 {}\;
Zauważyłem, że ta metoda działa dobrze dla mnie, szczególnie tam, gdzie miałem wiele kodowań plików i wiele rozszerzeń plików.
utworzyć skrypt vim nazwie script.vim:
set bomb
set fileencoding=utf-8
wq
następnie uruchomić skrypt na rozszerzeń plików, które chcesz kierować:
find . -type f \(-iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.css" -o -iname "*.less" -o -iname "*.js" \) -exec vim -S script.vim {} \;
Nikt nie zaproponował sposób, aby automatycznie wykryć i kodowanie recode.
Oto przykład przekodowania do UTF-8 wszystkich plików HTM/HTML z głównego oddziału GIT.
git ls-tree master -r --name-only | grep htm | xargs -n1 -I{} bash -c 'recode "$(file -b --mime-encoding {})..utf-8" {}'
zobaczyć http://stackoverflow.com/questions/4544669/batch-convert-latin-1-files-to-utf-8-using-iconv –
Można również zobaczyć plik „kota " Myślę, że twój problem z plikami nie koduje! Może twój plik może zawierać niektóre kody kolorów, więc nie możesz zobaczyć normalnego pliku. Spróbuj wpisać "cat" i napisz jeszcze raz. normalnie czy nie? –