Я хочу знать, как я могу найти и заменить определенный текст в нескольких файлах, как в Notepad ++ в связанном учебнике.
например: http://cybernetnews.com/find-replace-multiple-files/
text-editor
Фарук Узун
источник
источник
Ответы:
Здесь я использую sed, чтобы заменить каждое вхождение слова «cybernetnews» на «cybernet» в каждом файле с расширением c в каталоге / home / user / directory /.
Более общий вариант, когда вы выполняете рекурсивный поиск в каталоге выполнения и работаете только с обычными, читаемыми и доступными для записи файлами:
источник
cyber net news
? Как я могу преобразовать это вcyber net
?sed -i -e "s/cyber\snet\snews/cyber net/g"
Потоковый редактор sed является мощной утилитой для такого рода работ и является моим первым выбором, однако, если вы хотите сделать это из обычного текстового редактора с помощью собственного приложения на основе Ubuntu, я бы посоветовал вам взглянуть на Jedit. , Он доступен в репозиториях и может быть установлен, набрав в консоли:
Запустите jedit, щелкните пункт меню поиска, в списке меню выберите пункт Поиск в каталоге, вы увидите диалоговое окно ниже:
Это похоже на Notepad ++ и делает то же самое, я считаю, что это то, что вы хотите.
источник
sed
.Другой вариант графического интерфейса - regexxer :
источник
заменяет все вхождения oldtext на newtext во всех файлах в текущей папке. Однако вам придется экранировать все специальные символы Perl внутри oldtext и newtext, используя обратную косую черту.
источник
Посоветуйтесь с Geany , это идеальная замена АЭС для Linux. Вы можете сделать именно это, плюс вы можете использовать регулярные выражения.
источник
Я написал небольшой сценарий только для этой вещи. Если вам нужны только основы и вы не знакомы с sed и т. Д., Посмотрите здесь: http://www.csrdu.org/nauman/2010/12/30/bash-script-to-find-and-replace-in -a-множество-файлов /
Сценарий следующий:
источник
Вы можете использовать этот скрипт, скопировать код и сделать файл
find_and_replace_in_files.sh
.Я немного изменил это; Пожалуйста, скажите мне свое мнение.
источник
Другая программа - Searchmonkey .
источник
у меня работает на федоре
источник
sed
экземпляров! Так что это намного быстрее с точки зрения процессорного времени. Поскольку время доступа к файлу будет ограниченным, я думаю, что оно не намного быстрее по времени, но дает меньшую нагрузку на систему. Примечаниеxargs
будет помещать множество, как скученные, имен файлов в командной строке однойsed
команды - заполняя доступный размер буфера в зависимости от длины путей.+
вместо\;
вfind
, верно?xargs
, но ты прав; изman find
:-exec command {} +
: ...The command line is built in much the same way that xargs...
. Заставляет меня думать о командных строкахgit filter-branch
...;)Очень простое решение: замените все
*.txt
файлы в папкеstring_1
наstring_2
:источник
sed -i 's/string_1/string_2/g' $(grep -rEl 'string_1' ./)