Mudar charset e quebra de linha recursivamente no Linux
by Handrus Nogueira on Domingo, 30 Outubro/2011, under Dicas, Linux
Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços!
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!