Expresión regular para los archivos ocultos bajo Unix
Pregunta
Busco una expresión regular para que coincida con cada archivo que empieza con un "" en un directorio.
Estoy usando CMake (de CMake doc: "CMake espera que las expresiones regulares, no globs") y quiere hacer caso omiso de todos los archivos empezando por un punto (archivos ocultos) PERO "\..*"
o "^\..*"
no funciona: (
Lo extraño: esto funciona (gracias a de rq ) y extraer todos los archivos ocultos y archivos temporales ( "~" archivos terminados)
file(GLOB DOT ".*")
file(GLOB TILD "*~")
set (CPACK_SOURCE_IGNORE_FILES "${DOT};${TILD}")
Pero no puedo encontrar lo que hay que escribir directamente en CPACK_SOURCE_IGNORE_FILES
tener el mismo resultado!
Esta es la " doc " de esta variable.
Solución
Suena como GLOB es probablemente lo que quiere.
Probar. Abrir un archivo "test.cmake" y añadir lo siguiente:
file(GLOB ALL "*")
file(GLOB DOT ".*")
file(GLOB NOTDOT "[^.]*")
message("All Files ${ALL}")
message("Dot files ${DOT}")
message("Not dot files ${NOTDOT}")
A continuación, cree un par de archivos de prueba:
touch .dotfile
touch notdot
A continuación, ejecute "cmake -P test.cmake". La salida es:
All Files /tmp/cmake_test/.dotfile;/tmp/cmake_test/notdot;/tmp/cmake_test/test.cmake
Dot files /tmp/cmake_test/.dotfile
Not dot files /tmp/cmake_test/notdot;/tmp/cmake_test/test.cmake
Esto fue probado con cmake 2.6.0.
Otros consejos
El uso de la sintaxis de expresiones regulares estándar:
^\..*
Desde CMake al parecer no le gusta esto, puede usar algo como:
^\\..*
Eso es sólo una suposición, sin embargo, ya no tengo / usar CMake.
La siguiente de una sola línea hará el trabajo (ocultar archivos ocultos y tilde ( "~") terminado):
set(CPACK_SOURCE_IGNORE_FILES "/\\\\..*$;~$;${CPACK_SOURCE_IGNORE_FILES}")
Es necesario para escapar de ella.
^\..*
Prueba esto:
^[.].*