2010-11-04 26 views
6

Intento reemplazar muchos archivos a la vez con sed usando * como nombre de archivo. Sin embargo, también trata de procesar directorios, y da error y finaliza. ¿Hay una manera simple de superar esto?sed para excluir directorios

Respuesta

9

no estoy seguro exactamente cómo está utilizando sed aquí, pero la forma normal para procesar sólo los archivos regulares en UNIX es con el comando find, algo así como:

find . -type f -exec sed 's/Hello/Goodbye/g' {} ';' 

El tipo que restringe a archivos regulares, no directorios o FIFOs o cualquier otro tipo de magia del sistema de archivos.

Si ejecuta man find en su sistema, verá una plétora de otras opciones que puede utilizar.

+0

Todavía soy bastante nuevo en los comandos de shell de linux/unix, ¿por qué es que cuando ejecuto esto espacia mi pantalla con el contenido de muchos archivos pero nunca cambia nada? – HumbleWebDev

+0

@TheUnholy, eso es correcto. El objetivo de esta respuesta era mostrar cómo usar 'find' para procesar archivos y no directorios. La 'carga útil' del comando 'find' (que es un simple comando' sed' en este caso) se puede modificar para adaptarla a sus necesidades. – paxdiablo

Cuestiones relacionadas