Para fins de depuração, identificando arquivos que começam com uma marca de ordem de bytes (BOM) UTF-8 dentro de um diretório é crucial. No entanto, os métodos existentes podem ser complicados e encontrar problemas com nomes de arquivos que contenham quebras de linha. Neste artigo, nos aprofundamos em uma solução mais simplificada.
Começando com o comando original, empregamos find para percorrer recursivamente o diretório, filtrando arquivos e canalizando seus nomes para um loop while. Dentro do loop, head extrai os três primeiros bytes de cada arquivo e os compara com a sequência BOM esperada ($'\xef\xbb\xbf'). Os arquivos que atendem a essa condição são então destacados.
Uma desvantagem potencial dessa abordagem é sua vulnerabilidade a quebras de linha em nomes de arquivos. Para contornar esse problema, apresentamos um comando alternativo que não apenas localiza arquivos com prefixo BOM, mas também os erradica:
find . -type f -exec sed '1s/^\xEF\xBB\xBF//' -i {} \;
Este comando utiliza sed para substituir a sequência BOM por uma string vazia na primeira linha de cada arquivo correspondente. No entanto, observe que esta ação modificará quaisquer arquivos binários que contenham esses caracteres.
Para aqueles que buscam uma abordagem não destrutiva, recomendamos o seguinte comando:
grep -rl $'\xEF\xBB\xBF' .
Este comando emprega grep para localizar e listar arquivos contendo a sequência BOM sem alterar seu conteúdo.
Em última análise, a escolha da solução depende do resultado desejado e da natureza dos arquivos que estão sendo inspecionados.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3