¿Cómo excluir directorys numéricos con rsync?

Sé que rsync tiene una opción --exclude que uso con bastante frecuencia. Pero, ¿cómo puedo especificar que excluya todos los directorys "numéricos"?

En la list del directory a continuación, me gustaría tener solo copyr css , html e include

 . .. 123414 42344523 345343 2323 css html include 

Normalmente mi syntax es algo así como

rsync -avz /local/path/ [email protected]:/remote/path/ --exclude="cache"

Creo que debería verse algo así como --exclude="[0-9]*" pero no creo que eso funcione.

La opción de exclusión de rsync en realidad no es compatible con expresiones regulares, es más una coincidencia de patrones globbing de shell.

si esos directorys son bastante estáticos, solo debe --exclude-from=/full/path/to/file/exclude_directories.txt en un file y usar --exclude-from=/full/path/to/file/exclude_directories.txt .

Actualizado para proporcionar un ejemplo

Primero, simplemente coloque los directorys en un file:

 find . -type d -regex '.*/[0-9]*$' -print > /tmp/rsync-dir-exlcusions.txt 

o

 ( cat <<EOT 123414 42344523 345343 2323 EOT ) > /tmp/rsync-directory-exclusions.txt 

entonces puedes hacer tu trabajo de synchronization

 rsync -avHp --exlude-from=/tmp/rsync-directory-exclusions.txt /path/to/source/ /path/to/dest/ 

Solo necesita un paso adicional para configurar el file de text que contiene los directorys de exclusión, 1 por línea.

Tenga en count que la ruta de los directorys en el trabajo es su ruta relativa a cómo rsync ve el directory.

No puede decir "un nombre que contiene solo dígitos" en la syntax de patrones de rsync. Entonces incluya todos los nombres que contengan un no dígito y excluya el rest.

 rsync --include='*[!0-9]*' --exclude='*/' … 

Ver también mi guía de patrones rsync .

Use find para hacer una list de los directorys que se excluirán, luego use la opción rsync –exclude-from como la describió Tim Kennedy.

Puedes hacerlo en una línea:

 rsync -avHp --exclude-from=<(cd /path/to/source; find . -type d -regex './[0-9]*' | sed -e 's|./||') /path/to/source/ /path/to/dest/