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