В целях отладки идентификация файлов, которые начинаются с метки порядка байтов UTF-8 (BOM) внутри каталога имеет решающее значение. Однако существующие методы могут быть запутанными и могут вызывать проблемы с именами файлов, содержащими разрывы строк. В этой статье мы рассмотрим более упрощенное решение.
Начиная с исходной команды, мы используем find для рекурсивного обхода каталога, фильтрации файлов и передачи их имен в цикл while. Внутри цикла head извлекает первые три байта каждого файла и сравнивает их с ожидаемой последовательностью спецификации ($'\xef\xbb\xbf'). Файлы, соответствующие этому условию, затем выделяются.
Одним потенциальным недостатком этого подхода является его уязвимость к разрывам строк в именах файлов. Чтобы обойти эту проблему, мы представляем альтернативную команду, которая не только находит файлы с префиксом BOM, но и удаляет их:
find . -type f -exec sed '1s/^\xEF\xBB\xBF//' -i {} \;
Эта команда использует sed для замены последовательности спецификации пустой строкой в первой строке каждого соответствующий файл. Однако обратите внимание, что это действие приведет к изменению любых двоичных файлов, содержащих эти символы.
Для тех, кто ищет неразрушающий подход, мы рекомендуем следующую команду:
grep -rl $'\xEF\xBB\xBF' .
Эта команда использует grep для поиска и вывода списка файлов, содержащих последовательность спецификации, без изменения их содержимого.
В конечном счете, выбор решения зависит от желаемого результата и характера проверяемых файлов.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3