osx change file encoding (iconv) recursive
Wiem, że mogę przekonwertować kodowanie pojedynczego pliku POD OSX używając:
iconv -f ISO-8859-1 -t UTF-8 myfilename.xxx > myfilename-utf8.xxx
Muszę przekonwertować kilka plików z określonym rozszerzeniem, chcę więc przekonwertować kodowanie plików z ISO-8859 - 1 na UTF-8 dla wszystkich *.pliki ext w folderze / mydisk / myfolder
Być może ktoś zna składnię jak to zrobić
Thanks
Ekke
7 answers
Komentarz Adama pokazał mi, jak to rozwiązać, ale to była jedyna składnia, którą udało mi się wykonać:
find /mydisk/myfolder -name \*.xxx -type f | \
(while read file; do
iconv -f ISO-8859-1 -t UTF-8 "$file" > "${file%.xxx}-utf8.xxx";
done);
- i ... - o... nie działa, ale >
Thx again
Ekke
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-03 08:20:28
Jeśli twoja powłoka to bash, coś takiego
for files in /mydisk/myfolder/*.xxx
do
iconv -f ISO-8859-1 -t UTF-8 "$files" "${files%.xxx}-utf8.xxx"
done
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-25 13:23:00
Oto przykład przetestowany w mac 10.10. Znajdź plik po nazwie, przekonwertuj kod ,a następnie zastąp oryginalny plik.praca idealna. Dzięki za przykład Romana Truby, skopiuj poniższy Pełny kod do skryptu powłoki.
#!/bin/bash
find ./ -name *.java -type f | \
(while read file;
do if [[ "$file" != *.DS_Store* ]]; then
if [[ "$file" != *-utf8* ]]; then
iconv -f ISO-8859-1 -t UTF-8 "$file" > "$file-utf8";
rm $file;
echo mv "$file-utf8" "$file";
mv "$file-utf8" "$file";
fi
fi
done);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-14 22:57:46
Spróbuj tego ... jego przetestowane i działa:
Pierwszy krok (ICONV): find / var / www / - name*.php-type f / (while read file; do iconv-F ISO-8859-2 -T UTF-8 "$plik " > " ${plik%.php}.phpnew"; done)
Drugi krok (REWRITE-MV):
find / var / www / - name"*.phpnew" -type f / (while read file; do MV $file echo $file | sed 's/\(.*\.\)phpnew/\1php/'
; done)
To tylko wniosek z moich badań:)
Hope it helps Jakub Rulec
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-10 19:13:08
Możesz napisać skrypt w dowolnym języku skryptowym do iteracji nad każdym plikiem w /mydisk / myfolder, sprawdzić rozszerzenie za pomocą wyrażenia regularnego [.(.* )$], a jeśli jest to "ext", uruchom następujące (lub równoważne) z wywołania systemowego.
"iconv-F ISO-8859-1 -T UTF-8" + plik.getName () + " > " + plik.getName () + " - utf8.xxx "
To byłoby tylko kilka linijek w Pythonie, ale pozostawiam to jako ćwiczenie dla czytelnika, aby przejść przez specyfikę szukania iteracji katalogów i regularnego wyrażenia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-25 13:00:02
Jeśli chcesz to zrobić rekurencyjnie, możesz użyć find(1)
:
find /mydisk/myfolder -name \*.xxx -type f | \
(while read file; do
iconv -f ISO-8859-1 -t UTF-8 -i "$file" -o "${file%.xxx}-utf8.xxx
done)
Zauważ, że użyłem | while read
zamiast -exec
opcji find (lub przekierowania do xargs
) ze względu na manipulacje, które musimy zrobić z nazwą pliku, a mianowicie, odcinając rozszerzenie .xxx
(używając ${file%.xxx}
) i dodając -utf8.xxx
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-25 13:49:32
Rozszerzyłem Albert.Skrypt Qings:
- automatyczne wykrywanie bieżącego kodowania pliku
- dodano parametr polecenia do wykonania dry / exec-run
-
Dodano parametr dla wzorca katalogu i nazwy pliku
#!/bin/bash command=${1-"usage"} searchPattern=${2-"*.java"} searchDirectory=${3-"."} if [[ "$command" == "usage" ]]; then echo "convert-file-to-utf8.sh [usage|dry|exec] [searchPattern=$searchPattern] [searchDirectory=$searchDirectory]" exit fi find $searchDirectory -type f -name "$searchPattern" | \ (while read file; do if [[ "$file" != *.DS_Store* ]]; then if [[ "$file" != *-utf8* ]]; then currentEncoding="$(file --brief --mime-encoding $file)" if [[ "$currentEncoding" != "utf-8" ]]; then echo "command:$command / iconv -f $currentEncoding -t UTF-8 $file" if [[ "$command" == "exec" ]]; then iconv -f $currentEncoding -t UTF-8 "$file" > "$file-utf8"; rm $file; echo mv "$file-utf8" "$file"; mv "$file-utf8" "$file"; fi fi fi fi done);
Przetestowano na MacOS X 10.12.6 / Sierra.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-23 22:42:02