Chcę wiedzieć, jak znaleźć i zamienić określony tekst w wielu plikach, takich jak Notepad ++ w połączonym samouczku.
text-editor
Faruk Uzun
źródło
źródło
Odpowiedzi:
Tutaj używam sed, aby zastąpić każde wystąpienie słowa „cybernetnews” słowem „cybernet” w każdym pliku z rozszerzeniem, c, w katalogu / home / user / directory /.
Bardziej ogólna odmiana, w której wyszukiwanie odbywa się rekurencyjnie z katalogu wykonania i działa tylko na zwykłych, czytelnych i zapisywalnych plikach:
źródło
cyber net news
? Jak mogę to przekonwertowaćcyber net
?sed -i -e "s/cyber\snet\snews/cyber net/g"
Edytor strumieniowy, sed, jest potężnym narzędziem do tego rodzaju pracy i jest moim pierwszym wyborem, jednak jeśli chcesz to zrobić ze zwykłego edytora tekstowego przy użyciu natywnej aplikacji opartej na Ubuntu, proponuję spojrzeć na Jedit , Jest dostępny w repozytoriach i można go zainstalować, wpisując w konsoli:
Uruchom jedit, kliknij pozycję menu wyszukiwania, na liście menu kliknij pozycję Szukaj w katalogu, zostanie wyświetlone poniższe okno dialogowe:
Jest podobny do Notepad ++ i robi to samo, wierzę, że tego właśnie chcesz.
źródło
sed
.Inną opcją GUI jest regexxer :
źródło
zastępuje każde wystąpienie oldtext przez newtext we wszystkich plikach w bieżącym folderze. Jednak będziesz musiał uciec od wszystkich znaków specjalnych Perla w oldtext i newtext za pomocą odwrotnego ukośnika.
źródło
Sprawdź u Geany , jest to idealny zamiennik NPP dla Linuksa. Możesz zrobić dokładnie to, plus możesz użyć wyrażenia regularnego.
źródło
Napisałem mały skrypt dla tej rzeczy. Jeśli potrzebujesz tylko podstaw i nie znasz sed itp, zajrzyj tutaj: http://www.csrdu.org/nauman/2010/12/30/bash-script-to-find-and-replace-in -a-zbiór plików /
Skrypt jest następujący:
źródło
Możesz użyć tego skryptu, skopiować kod i utworzyć plik
find_and_replace_in_files.sh
.Trochę go zmodyfikowałem; proszę powiedz mi swoją opinię.
źródło
Innym programem jest Searchmonkey .
źródło
działa dla mnie na Fedorze
źródło
sed
instancji! Jest więc znacznie szybszy pod względem czasu procesora. Ponieważ czas dostępu do pliku byłby ograniczony, myślę, że nie jest on znacznie szybszy w czasie, ale daje mniejsze obciążenie systemu. Uwagaxargs
umieści wiele wierszy nazw plików wsed
wierszu polecenia pojedynczego polecenia - wypełniając dostępny rozmiar bufora na podstawie długości ścieżek.+
zamiast\;
wfind
, prawda?xargs
, ale masz rację; zman find
:-exec command {} +
...The command line is built in much the same way that xargs...
. Przypomina mi się wiersze poleceńgit filter-branch
...;)To bardzo proste rozwiązanie: zastąpić w wszystkie
*.txt
pliki w folderzestring_1
zstring_2
:źródło
sed -i 's/string_1/string_2/g' $(grep -rEl 'string_1' ./)