Как выполнить поиск-заменить содержимое в файлах в Ubuntu Linux?

#file #ubuntu #replace

#файл #ubuntu #заменить

Вопрос:

Моя платформа: рабочая станция Ubuntu Linux

В каталоге у меня есть серия файлов с именем файла xxx_1.in для xxx_50.in

Для каждого файла я хочу заменить abc на def. Если я делаю это по отдельности, я должен ввести:g / abc / s //def / g

Как написать скрипт для обработки всех файлов одновременно?

Комментарии:

1. Я почистил часть грамматики и уточнил название.

2. Вы заменяете abc на def в содержимом файла или в названии? Я сделаю и то, и другое.

Ответ №1:

 sed -i 's/abc/def/g' xxx_*.in
  

должно быть достаточно

Ответ №2:

Мне нравится Python, даже для написания сценариев в оболочке. Я не могу понять, как использовать sed , поэтому я придерживаюсь поиска и замены на Python:

 #!/usr/bin/env python
import os, glob

for filename in glob('xxx_*.in'):
  os.rename(filename , filename .replace('abc', 'def'))
  

Итак, как встроенный скрипт, который запускается, когда вы копируете / вставляете его в терминал (у меня нет Python на моем текущем компьютере, поэтому никаких гарантий),

 python -c "import os, glob; eval('for f in glob('xxx_*.in'):n  os.rename(filename , filename .replace('abc', 'def'))'"
  

Похоже, вы имели в виду содержимое файла. Это, я могу обойтись без Python (надеюсь, это сработает):

 for f in xxx_*.in; do sed s/abc/def/g "$f"; done
  

Комментарии:

1. Обязательно заключите переменную имени файла в кавычки, как в "$f" .