Cómo copiar con cp y excluir archivos o directorios internos (equivalente a rsync –exclude)

on

Si yo les pidiera que mencionen un comando para copiar una carpeta hacia otro lugar, casi todos mencionarían a cp.
Ahora, si les digo que además, deben copiar todo el contenido de esa carpeta excepto 1 archivo, ahí muchos se quedarían pensando, y otros mencionarían a rsync, pues con el parámetro –exclude se puede excluir X archivo o carpeta y no copiarla. Pero… ¿sabían que cp también permite hacer esto? … O_O … sí amigos, cp tiene su propio “exclude” jeje.
Por ejemplo, tenemos la carpeta isos que contiene: ubuntu.iso, debian.iso y archlinux.iso :Y sucede que deseamos copiar hacia la otra carpeta (distros-deb, que está vacía) el archivo debian.iso y ubuntu.iso, o sea, todos menos archlinux.iso
Para ello podríamos copiar un archivo y luego otro, manualmente, pero es mucho más inteligente usar las opciones que nos brinda el sistema no? … :D … por ejemplo, para hacer esto basta con:
cp isos/!(archlinux.iso) distros-deb/
Y esto basta para que se copie TODO lo que contenga el directorio isos hacia distros-deb, todo excepto archlinux.iso ;)
Pero supongamos que no solo tenemos esos 3 archivos, sino que además tenemos fedora.iso y chakra.iso … y queremos hacer lo mismo, quedaría excluir también de la copia fedora.iso y chakra.iso, veamos cómo hacerlo:
cp isos/!(archlinux.iso|fedora.iso|chakra.iso) distros-deb/
Como pueden ver, se puede excluir varios archivos o carpetas, solo los separamos por una tubería (|) y asunto resuelto :D
Con esto no quiero decir que cp sea mejor para todo que rsync … pero, ambos son excelentes herramientas, por ejemplo … ¿conocían el parámetro -u de cp? … jeje, seguro que no ;)
Bueno, nada más que agregar … ¿a que este es un interesante tip? :D
Saludos

Bloggroll

Páginas vistas en total

Blog Archive