HowTo Добавить конвертацию в bash

Checkme

Team member
VIP Simple
Verified
Joined
Apr 25, 2016
Messages
515
Reaction score
157
Скрипт для поиска и перекодирования файлов из одной кодировки в другую только файлов исходной кодировки:
Code:
#!/bin/bash
find -name "*.js" -type f -print0 | while read -d $'\0' -r path; do test "$(echo "$path" | enca -L russian -i)" = "UTF-8" || iconv -f UTF-8 -t WINDOWS-1251 "$path" > tmp.file; mv tmp.file "$path"; done
 
А вот пример в одну строку, как можно перекодировать в UTF-8. Расширение искомых файлов можно добавлять.
Для конвертации используется утилита enconv из пакета enca, приимущество перед iconv в том, что не нужно создавать временные файлы, конвертирует сразу в нужную кодировку. man enconv
Code:
find . -type f \( -name "*.php" -o -name "*.snp" -o -name "*.js" -o -name "*.css" -o -name "*.less" -o -name "*.xml" -o -name "*.config" -o -name "*.csv" \) -exec enconv -L ru -x UTF-8 '{}' ';'
и наоборот, в 1251
Code:
find . -type f -name '*.php' -exec enconv -V --convert-to=CP1251 '{}' ';'
Расширить поиск по файлам, можно из предыдущего примера.
 
Top