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