Quiero saber cómo puedo encontrar y reemplazar un texto específico en varios archivos como en Notepad ++ en el tutorial vinculado.
por ejemplo: http://cybernetnews.com/find-replace-multiple-files/
text-editor
Faruk Uzun
fuente
fuente
Respuestas:
Aquí uso sed para reemplazar cada aparición de la palabra "cybernetnews" con "cybernet" en cada archivo con la extensión, c, en el directorio, / home / user / directory /.
Una variación más genérica en la que busca de forma recursiva desde el directorio de ejecución y opera solo en archivos normales, legibles y grabables:
fuente
cyber net news
? ¿Cómo puedo convertir esto acyber net
?sed -i -e "s/cyber\snet\snews/cyber net/g"
El editor de flujo, sed, es una poderosa utilidad para este tipo de trabajo y es mi primera opción, sin embargo, si desea hacer esto desde un editor de texto ordinario usando una aplicación nativa basada en Ubuntu, le sugiero que eche un vistazo a Jedit , Está disponible en los repositorios y puede instalarse escribiendo en su consola:
Inicie jedit, haga clic en el elemento del menú de búsqueda, en la lista del menú, haga clic en el elemento Buscar en el directorio, se le presentará el siguiente diálogo:
Esto es similar al de Notepad ++ y hace lo mismo, creo que esto es lo que quieres.
fuente
sed
.Otra opción de GUI es regexxer :
fuente
reemplaza cualquier aparición de texto antiguo por texto nuevo en todos los archivos de la carpeta actual. Sin embargo, tendrá que escapar de todos los caracteres especiales de Perl dentro de texto antiguo y texto nuevo utilizando la barra invertida.
fuente
Consulte con Geany , es el reemplazo perfecto de NPP para Linux. Puedes hacer exactamente eso y puedes usar regex.
fuente
Escribí un pequeño guión solo para esta cosa. Si solo necesita lo básico y no está familiarizado con sed, etc., eche un vistazo aquí: http://www.csrdu.org/nauman/2010/12/30/bash-script-to-find-and-replace-in -a-conjunto-de-archivos /
El guión es el siguiente:
fuente
Puede usar este script, copiar código y crear un archivo
find_and_replace_in_files.sh
.Lo he modificado un poco; Por favor, dime tu opinión.
fuente
Otro programa es Searchmonkey .
fuente
funciona para mí en fedora
fuente
sed
instancias! Por lo tanto, es mucho más rápido en términos de tiempo de CPU. Debido a que el tiempo de acceso a los archivos sería limitado, creo que no es mucho más rápido en el tiempo del reloj, pero da una menor carga del sistema. Notexargs
colocará lotes, como hundereds, de nombres de archivo en la línea de comando de un solosed
comando, llenando el tamaño del búfer disponible en función de la longitud de las rutas.+
lugar de\;
adentrofind
, ¿verdad?xargs
, pero tienes razón; desdeman find
:-exec command {} +
: ...The command line is built in much the same way that xargs...
. Me hace pensar en las líneas de comando degit filter-branch
...;)Una solución muy simple: reemplazar en todos los
*.txt
archivos en la carpetastring_1
constring_2
:fuente
sed -i 's/string_1/string_2/g' $(grep -rEl 'string_1' ./)