Я ищу некоторые инструменты командной строки для Linux, которые могут помочь мне обнаруживать и преобразовывать файлы из наборов символов, таких как iso-8859-1 и windows-1252 до utf-8 и от окончаний строк Windows до окончаний строк Unix.
Причина, по которой мне это нужно, заключается в том, что я работаю над проектами на серверах Linux через SFTP с редакторами в Windows (например, Sublime Text), которые просто постоянно портят эти вещи. Прямо сейчас я предполагаю, что примерно половина моих файлов - это utf-8 , остальные - iso-8859-1 и windows-1252 , как кажется Sublime Text просто выбирает набор символов, которые содержит файл, когда я его сохраняю. Концы строк ВСЕГДА являются окончаниями строк Windows, хотя я указал в параметрах, что окончание строк по умолчанию - LF , поэтому примерно половина моих файлов имеет LF , а половина - CRLF .
Мне понадобится хотя бы инструмент, который рекурсивно просканирует папку моего проекта и предупредит меня о файлах, которые отличаются от utf-8 с окончанием строки LF , чтобы я мог вручную исправить это до того, как я зафиксирую свои изменения в GIT.
Также приветствуются любые комментарии и личный опыт по теме.
Спасибо
Изменить: У меня есть временное решение, в котором я использую tree
и file
для вывода информации о каждом файле в моем проекте, но это вроде как шаткий. Если я не включу параметр -i
для файла
, то многие мои файлы получат другой вывод, например текст программы ASCII C ++ и HTML-документ. текст и Текст на английском языке и т. д .:
$ tree -f -i -a -I node_modules --noreport -n | xargs file | grep -v directory ./config.json: ASCII C++ program text ./debugserver.sh: ASCII text ./.gitignore: ASCII text, with no line terminators ./lib/config.js: ASCII text ./lib/database.js: ASCII text ./lib/get_input.js: ASCII text ./lib/models/stream.js: ASCII English text ./lib/serverconfig.js: ASCII text ./lib/server.js: ASCII text ./package.json: ASCII text ./public/index.html: HTML document text ./src/config.coffee: ASCII English text ./src/database.coffee: ASCII English text ./src/get_input.coffee: ASCII English text, with CRLF line terminators ./src/jtv.coffee: ASCII English text ./src/models/stream.coffee: ASCII English text ./src/server.coffee: ASCII text ./src/serverconfig.coffee: ASCII text ./testserver.sh: ASCII text ./vendor/minify.json.js: ASCII C++ program text, with CRLF line terminators
Но если я включу -i
, он не покажет мне терминаторы строки:
$ tree -f -i -a -I node_modules --noreport -n | xargs file -i | grep -v directory ./config.json: text/x-c++; charset=us-ascii ./debugserver.sh: text/plain; charset=us-ascii ./.gitignore: text/plain; charset=us-ascii ./lib/config.js: text/plain; charset=us-ascii ./lib/database.js: text/plain; charset=us-ascii ./lib/get_input.js: text/plain; charset=us-ascii ./lib/models/stream.js: text/plain; charset=us-ascii ./lib/serverconfig.js: text/plain; charset=us-ascii ./lib/server.js: text/plain; charset=us-ascii ./package.json: text/plain; charset=us-ascii ./public/index.html: text/html; charset=us-ascii ./src/config.coffee: text/plain; charset=us-ascii ./src/database.coffee: text/plain; charset=us-ascii ./src/get_input.coffee: text/plain; charset=us-ascii ./src/jtv.coffee: text/plain; charset=us-ascii ./src/models/stream.coffee: text/plain; charset=us-ascii ./src/server.coffee: text/plain; charset=us-ascii ./src/serverconfig.coffee: text/plain; charset=us-ascii ./testserver.sh: text/plain; charset=us-ascii ./vendor/minify.json.js: text/x-c++; charset=us-ascii
Также почему отображается charset = us-ascii , а не utf-8 ? А что такое text / x-c ++ ? Есть ли способ вывести только charset = utf-8
и line-terminators = LF
для каждого файла?