Як знайти та замінити текст у декількох файлах з терміналу

Знайти та замінити текст може бути простим завданням за допомогою текстові редактори більш базовий. Але що відбувається, коли вам потрібно виконати те саме завдання в декількох файлах одночасно?

Ну, там все ускладнюється ... або не дуже.


У наступному прикладі ми будемо використовувати sed, щоб замінити всі входження слова "mongo" на слово "aurelio" у всіх файлах із розширенням .txt і що знаходяться в папці / home / user / myfolder /.

find / home / user / myfolder / -name * .txt -exec sed -i "s / mongo / aurelio / g" {} \;

Це просто ...

Перед закінченням варто згадати, що деякі текстові редактори дозволяють виконувати цю операцію за допомогою графічного інтерфейсу. Серед інших варто виділити Jedit, Geany, Regexxer тощо.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   ТТГ - сказав він

    супер

  2.   Скептично - сказав він

    Я використовую Gedit

    1.    мрлон - сказав він

      gedit для декількох файлів ??? як ???

  3.   Рон - сказав він

    Як я міг поставити grep між ai?

    Що мені потрібно, це зробити наступне, шукати всередині будинку всі файли, які називаються index.html і містять слово "XXXXXXX", і замінити його на "YYYYYYYYYY", як це можна було зробити, щоб він здійснював пошук лише в файли, які насправді мають рядок?

    Дуже дякую !

  4.   МельхорХоспедагем - сказав він

    Я теж використовую Gedit, але велике спасибі

  5.   Ангел Гарсія - сказав він

    Вам бракує аргументу для exec. Правильним кодом буде:
    find / home / username / myfolder / -name * .txt -exec sed -i "s / mongo / aurelio / g" {} \;

    Вітаю 😀

    1.    давайте використовувати linux - сказав він

      Ти правий! Дякую!
      Я це вже виправив. : =)

  6.   Гардо - сказав він

    Я щойно спробував це (як ROOT):

    знайти / usr / share / icons / ACYL-Allgray / -name * .svg -exec sed -i "s / 666666/000000 / g" {} \;

    щоб змінити колір усього набору піктограм. Правда в тому, що це дуже потужна команда, зазвичай це завдання забирало б у мене годин редагування файлів за файлами.

  7.   Едмундо - сказав він

    Вставте текст у декілька файлів відповідно до номера рядка, в моєму випадку рядок 2 (2i), у centos linux

    знайти / домашню // public_html / res / -name -exec sed -i "2i \;" {} \;

    1.    Едмундо - сказав він

      вийшов не весь код, тому я повторно надіслав:

      find / home / user / public_html / res / -name filename.ext -exec sed -i "2i \ текст для вставки" {} \;