Solapas principales

A veces queremos sustituir una cadena en todos los archivos de un directorio y sus subdirectorios de forma recursiva. Ésto es sencillo de hacer utilizando perl. Vamos a verlo por partes: Cuando queremos sustituir directamente una cadena por otra en un fichero, hacemos algo así:

# perl -p -i -e 's/cadenaasustituir/nuevacadena/g' fichero

Si la sustitución queremos hacerla en todos los ficheros de un subdirectorio, haremos:

# perl -p -i -e 's/cadenaasustituir/nuevacadena/g' *

Si queremos sustituir la cadena en todos los subdirectorios del directorio actual, combinaremos el comando perl con un comando find que busque todos los archivos:

# perl -p -i -e 's/cadenaasustituir/nuevacadena/g' `find ./ -name *`

Y ya para terminar de rematar: Si queremos sustituir una cadena por otra en todos los ficheros con un determinado nombre en todos los subdirectorios del directorio actual:

# perl -p -i -e 's/cadenaasustituir/nuevacadena/g' `find ./ -name "patronabuscar"`

Veamos unos ejemplos: Sustituir la cadena jose por pepe en el fichero clientes.txt:

# perl -p -i -e 's/jose/pepe/g' clientes.txt

Sustituir la cadena jose por pepe en todos los ficheros del directorio actual:

# perl -p -i -e 's/jose/pepe/g' *

Sustituir la cadena jose por pepe en el directorio actual y en todos sus subdirectorios:

# perl -p -i -e 's/jose/pepe/g' `find ./ -name *`

Sustituir la cadena jose por pepe en todos los ficheros con extensión .txt del directorio actual y de todos sus subdirectorios:

# perl -p -i -e 's/jose/pepe/g' `find ./ -name "*.txt"`

Y un último ejemplo: Sustituir la cadena $(grub_device) por la cadena (hd0,1) en todos los ficheros con extensión .lst del directorio actual y sus subdirectorios:

# perl -p -i -e 's/\$\(grub_device\)/\(hd0,1\)/g' `find ./ -name "*.lst"`

Fuente Original

Contenido por etiquetas

Linux Linux Tips Solución Linux Help Drupal Arch-Linux Media Front Hacking Videos Terminal Linux seguridad Shell Manjaro Servers Linux-Distro Mac OSX Linux Guías Comandos Consola Android Screencast Ubuntu Drush Windows Joomla Backtrack MacOS Command Line Xampp Cracking Debian Compiz Fusion Seguridad Drupal 7 Instalación Servidor Local Skype Telefonía ROOT Virtualmin Media Youtube Antergos Sysmonitor CyanogenMod KDE Elastix PDF Libros Server ClamAv Samba ownCloud error Joomla Seguridad Setup Webmin Grub Views Kali Linux Drush_Make Escritorio Descargar Nivo Slider Xampp 1.8.1 Whatsapp Kali SCP SSH Unix servidor web apache Noticias PHP Rootear mysql dd Líder Boot Virtual Youtube Katana Drush Windows ROM Top 500 Metasploit SEO url canonica url Limpias Asterisk Joomla 3.0 XFCE Centos Distros Iphone Chrome dselect Triple-Boot grep GCP Driver r8168 Webform Webform_Layout Views Horizontal Slider Xwinwrap TinyMCE IMCE g729 Códec Imagesloaded String htaccess SA-CORE-2013-003 Gimp Prestashop Papá FINK PBX youtube-dl Redgum Archserver Secure Copy Shutter Encriptar Enlaces Externos Nube Joomla 2.5 FTP Wine Sox Line ncdu duff Java6 Windows 10 MS-SQL SQL Kingsoft Office WPS 1and1 VMplayer Inyection SQL Viber Fish Recovery Wake On Lan Wol Drupal 8 Real Estate Alsi Streaming Atraci Tails Telegram Sigram Galaxy S4 CKEditor Redes Overlook Fing Galaxy S3 vs Iphone 5 Webform Layout Horizontal Slider Media Vimeo MediaFront Acquia Tilt 3D Cain & Abel Office winAUTOPWN firestarter gh22ns50 LPS Conky CryptKeeper Rarcrack Open DNS exec: 90: : Permission denied Galaxy S (bootstrap) DARKY´S ROM .make Metasploitable Fing fallo sistema PhpMyadmin internal server error 500 Cerebro FDesktopRecorder Piropos Geek Texto Sustituir Jdownloader 10 Millones Ahorra bitacora Migrar Aircrack-ng LAMP Supercomputadoras sniffing Script Google-Earth Arranque compartir red firewall Munich Mounty