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