jueves, 7 de noviembre de 2013

Linux: Copiar contenido de un directorio, excluyendo algunos archivos


Uno de los comandos más utilizados en la consola de Linux es cp que nos permite copiar un archivo o directorio en otra ubicación. Al tratar de copiar el contenido de un directorio, necesitaba dejar fuera de esta copia varios archivos que por su tamaño no podían ser copiados a la nueva ubicación, después de investigar en la web encontré el modo de realizar esta operación utilizando el comando cp. A continuación se detallan el modo de realizar esta operación.

cp directorio_o/!(archivo.txt) directorio_d: copia todos los archivos que están en el directorio directorio_o menos el archivo archivo.txt al directorio directorio_d.

cp directorio_o/!(archivo_1.txt|archivo_2.txt) directorio_d: copia todos los archivos que están en el directorio directorio_o menos los archivos archivo_1.txt y archivo_2.txt al directorio directorio_d. Esto permite excluir de la copia todos los archivos que el usuario considere necesarios, para agregar más archivos solo debe agregar un nuevo pipe “|” seguido por el nombre del siguiente archivo que se desea excluir.

cp -r directorio_o/!(directorio_e) directorio_d: copia todo el contenido del directorio directorio_o menos el directorio directorio_e al directorio directorio_d. Esta copia incluye otros directorio que existan en directorio_o porque se agrega el argumento -r que indica que la copia sea recursiva, es decir, que si existen otros directorios dentro del directorio origen también sean incluidos en la copia.

Se debe mencionar que la opción del pipe “|” que permite excluir más de un archivo, también puede ser utilizada para excluir más de un directorio o excluir directorios y archivos juntos en la misma operación, como se puede observar a continuación.

cp -r directorio_o/!(directorio_e1|directorio_e2) directorio_d: copiar todo el contenido del directorio directorio_o menos los directorios directorio_e1 y directorio_e2 al directorio directorio_d.

cp -r directorio_o/!(archivo_1.txt|archivo_2.txt|directorio_e1|directorio_e2) directorio_d: copiar todo el contenido del directorio directorio_o menos archivo_1.txt, archivo_2.txt, directorio_e1 y directorio_e2 al directorio_d.

"Gracias, por compartir tus conocimientos"