Как заменить все вкладки в каждом файле в ветке файловой системы на 2 пробела?

Я кодирую Scala, и это соглашение – использовать двойные пробелы на уровень для идентификации. Но использование разных редакторов делает мои источники заполнены сочетанием пробелов и вкладок.

Я бы хотел реорганизовать все файлы (* .scala-файлы, на самом деле, но указать это необязательно) (в данном каталоге и всей базовой ветви FS (рекурсивно)) автоматически, заменив все вкладки на два пробела. Я считаю, что есть простой и красивый способ сделать это с помощью классических инструментов Unix / GNU, но мне не хватает опыта в этой области. Не могли бы вы помочь мне?

2 Solutions collect form web for “Как заменить все вкладки в каждом файле в ветке файловой системы на 2 пробела?”

Рекурсивно, используя expand (которое было сделано для этой цели): find . -type f -name '*.scala' -exec bash -c 'for x in "$@"; do mv "$x"{,.bak} && expand -t 2 "$x.bak" > "$x" && rm "$x.bak"; done' {} + find . -type f -name '*.scala' -exec bash -c 'for x in "$@"; do mv "$x"{,.bak} && expand -t 2 "$x.bak" > "$x" && rm "$x.bak"; done' {} +

Я бы сделал это с помощью sed или perl (см. Ответ Sardathrion), потому что они поддерживают встроенное редактирование, но я хотел бы упомянуть о том, что все равно expand .

EDIT: Это будет find . -type f -name '*.scala' -exec perl -p -i -e $'s/\t/ /g' {} + find . -type f -name '*.scala' -exec perl -p -i -e $'s/\t/ /g' {} +

Это должно сделать это:

 find . -type f -name '*.scala$' -exec sed -i 's/\t/ /g' {} + 

Примечание: это не проверено.

  • Количество вхождений в текстовом файле, где первый символ после 12-го канала равен 1?
  • Шаблоны значений для сценария bash для файлов apache conf
  • Поиск текстового файла с помощью одной строки с использованием регулярных выражений
  • Каким образом можно извлечь сегмент из текстового файла?
  • Unix - поиск имен с egrep
  • Вставить строку или строку после последнего экземпляра определенной переменной поиска в цикле
  • sed удалять пространство
  • Показать символ в позиции в файле
  • Извлечь строку, если первое поле содержит точку
  • Перенести первые N строк вывода в конец без использования временного файла
  • Как удалить текст перед разделителем в Linux
  • Как фильтровать линии, проходящие через трубу?
  • Interesting Posts

    Как изменить размер рабочего стола

    Клонировать весь раздел или жесткий диск в разреженный файл

    Почему rsync пытается скопировать файл, который уже обновлен?

    Автоматическое расширение последнего раздела для использования всего нераспределенного пространства, используя разделенный в пакетном режиме

    Как установить идентификатор для нескольких фоновых процессов?

    Почему эта команда gs не работает на –filename.pdf?

    vim не показан в термоблоке

    Apache2 userdir включен, но до сих пор нет доступа

    Почему ARM SoCs, казалось бы, трудно справиться с ядром?

    Использование grep для перечисления определенных строк из файла

    Переименуйте первую часть нескольких файлов с помощью mv

    Как отслеживать ход загрузки WGET после закрытия сеанса SSH

    dmidecode отличается от lspci

    Установите urxvt для работы с 256 цветами

    как поставить очередь на выполнение команды после выполнения другой команды?

    Linux и Unix - лучшая ОС в мире.