Expression régulière pour les fichiers cachés sous unix
Question
Je cherche une expression régulière pour correspondre à tous les fichiers commençant avec un « » dans un répertoire.
J'utilise CMake (de CMake doc: « CMake attend des expressions régulières, non globs ») et que vous voulez ignorer tous les fichiers commençant avec un point (fichiers cachés) mais "\..*"
ou "^\..*"
ne fonctionne pas: (
La chose étrange: cela fonctionne (grâce à de rq ) et de supprimer tous les fichiers cachés et les fichiers temporaires ( « ~ » fichiers terminés)
file(GLOB DOT ".*")
file(GLOB TILD "*~")
set (CPACK_SOURCE_IGNORE_FILES "${DOT};${TILD}")
Mais je ne peux pas trouver la bonne chose à écrire directement dans CPACK_SOURCE_IGNORE_FILES
d'avoir le même résultat!
Voici le " doc " de cette variable.
La solution
Sons comme GLOB est probablement ce que vous voulez.
Essayez ceci. Ouvrez un fichier « test.cmake » et ajouter ce qui suit:
file(GLOB ALL "*")
file(GLOB DOT ".*")
file(GLOB NOTDOT "[^.]*")
message("All Files ${ALL}")
message("Dot files ${DOT}")
message("Not dot files ${NOTDOT}")
Ensuite, créez deux fichiers de test:
touch .dotfile
touch notdot
Ensuite, exécutez "cmake -P test.cmake". La sortie est la suivante:
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
Cela a été testé avec CMake 2.6.0.
Autres conseils
En utilisant la syntaxe standard regex:
^\..*
Depuis CMake ne semble pas comme cela, il peut utiliser quelque chose comme:
^\\..*
C'est juste une supposition, bien que, depuis que je n'ai pas / utiliser CMake.
La seule ligne suivante fera le travail (cacher cachés et tilde ( « ~ ») terminé fichiers):
set(CPACK_SOURCE_IGNORE_FILES "/\\\\..*$;~$;${CPACK_SOURCE_IGNORE_FILES}")
Vous devez échapper.
^\..*
Essayez ceci:
^[.].*