- Вопрос или проблема
- Ответ или решение
- Обработка текстовых файлов в пакетном режиме с использованием Zsh и Vim
- Проблема
- Решение
- Шаг 1: Сохранение списка файлов
- Шаг 2: Загрузка массива файлов
- Шаг 3: Редактирование файлов
- Шаг 4: Обновление массива
- Альтернативный подход: Перемещение обработанных файлов
- Заключение
Вопрос или проблема
Я столкнулся с проблемой:
У меня есть папки с обычно 50-150 текстовыми файлами, которые нужно изменить.
SED не вариант, так как изменения не могут быть автоматизированы (иногда нужно изменить “ss”, иногда нет) Большинство необходимых изменений уже были сделаны с помощью SED. Я МОГУ использовать vi * в папке и пройтись по каждому файлу, а затем сохранить или открыть каждый отдельно, но это будет сильно утомлять мозг.
Я хотел бы открыть 5 файлов подряд, и когда они будут завершены, в следующий раз, когда у меня будет свободный мозг, открыть следующие 5 файлов и так далее.
Есть какие-нибудь разумные идеи? К сожалению, соглашение об именовании файлов не предлагает “умных” частей для изменения.
Если использовать zsh
и vim
.
Первый раз:
files=( *(.) ); typeset -p files > .todo
В следующий раз:
source ./.todo
Затем редактируйте по 5 за раз с помощью:
vim -- $files[1,5]
Внутри vim
: :argdo %s/ss/something-else/gc
для глобальной замены с запросом для каждой замены.
Когда закончите с этими пятью:
files[1,5]=(); typeset -p files > .todo
Чтобы обновить список файлов для переименования.
Кроме того, переместите обработанные файлы в директорию done
(по-прежнему с zsh):
mkdir -p done
vim -- *(.[1,5])
mv -- *(.[1,5]) done/
Или с анонимной функцией, чтобы передать эти первые 5 обычных файлов как в vim
, так и в mv
: () { vim $@ && mv $@ done; } ./*(.[1,5])
Ответ или решение
Обработка текстовых файлов в пакетном режиме с использованием Zsh и Vim
В современной IT-экосистеме обработка大量 данных является распространенной задачей. Если вы столкнулись с необходимостью редактирования большого количества текстовых файлов, и автоматизация с помощью инструментов как SED не подходит, вы можете воспользоваться более гибкими подходами. Я расскажу о методах редактирования файлов в пакетном режиме с использованием оболочки Zsh и текстового редактора Vim.
Проблема
Вы имеете каталоги с 50-150 текстовыми файлами, которые нужно модифицировать, причем изменения не могут быть полностью автоматизированы. Использование vi *
для поочередного редактирования файлов является утомительным. Вы хотите открывать по 5 файлов за раз, чтобы работать с ними в удобном ритме и избегать переутомления.
Решение
Используя оболочку Zsh и Vim, мы можем организовать эффективный процесс редактирования. Вот пошаговая инструкция:
Шаг 1: Сохранение списка файлов
Сначала создайте массив, который будет содержать все текстовые файлы в текущем каталоге, и сохраните этот массив в файл для дальнейшего использования:
files=( *(.) ); typeset -p files > .todo
Эта команда создаст массив files
, который будет хранить все файлы в текущем каталоге. Далее команда typeset
сохранит массив в файл .todo
, чтобы его можно было использовать позже.
Шаг 2: Загрузка массива файлов
Когда вы захотите продолжить редактирование, загрузите массив файлов из сохраненного файла:
source ./.todo
Шаг 3: Редактирование файлов
Теперь вы можете редактировать первые 5 файлов из массива с помощью Vim:
vim -- $files[1,5]
Внутри Vim вы можете использовать команду:
:argdo %s/ss/something-else/gc
Эта команда заменит все вхождения "ss" на "something-else" с запросом подтверждения для каждой замены. Это позволяет вам контролировать изменения и указывать, где они должны происходить.
Шаг 4: Обновление массива
После завершения редактирования файлов обновите массив, удалив уже обработанные файлы:
files[1,5]=(); typeset -p files > .todo
Альтернативный подход: Перемещение обработанных файлов
Если вы предпочитаете перемещать обработанные файлы в отдельный каталог для упорядочивания, выполните следующие команды:
mkdir -p done
vim -- *(.[1,5])
mv -- *(.[1,5]) done/
Создание каталога done
помогает вам хранить файлы, которые были обработаны. Таким образом, вы поддерживаете порядок и сохраняете историю редактирования.
Заключение
Используя описанные методы, вы сможете эффективно обрабатывать и редактировать текстовые файлы в пакетном режиме, что позволит избежать утомления и улучшить производительность. Этот подход позволяет адаптироваться к вашему стилю работы и обеспечивает контроль над процессом редактирования, несмотря на уникальность изменений, которые необходимо внести.