Mudar charset e quebra de linha recursivamente no Linux
by Handrus Nogueira on Quarta, 14 Abril/2010, under Dicas, Linux
A algum tempo atrás precisei passar uma aplicação web que utilizava quebras de linha no formato linux e charset iso-8859-1 (US-Latin) para UTF-8 com quebra de linha no formato windows. Na época codifiquei com a ajuda do chronos este script que agora compartilho:
1 2 3 4 5 6 7 8 9 10 | #!/bin/sh #change extensions filter as you need ;) find -type f | egrep "\.php|\.css|\.js|\.html|\.htm" | egrep -v "\.svn" > ./charset_list.txt; while read -r line;do #charset change iconv -f LATIN1 -t UTF-8 "$line" > "${line}2"; mv "${line}2" "$line"; #we adopted dos format for line breaks unix2dos "${line}"; done < ./charset_list.txt > ./charset_after.log 2>&1 #receive list of params and send output to log |
Explicações: O script gera uma lista com todos os arquivos da pasta onde ele se encontra e suas subpastas subsequentes (conforme o filtro explicado na segunda linha do código).
Depois ele lê a lista e aplica as alterações num arquivo cópia. Move o arquivo sobre o anterior e depois altera as quebras de linha. Bastante simples, I LOVE BASH!