unix下隐藏文件的正则表达式

时间:2009-04-07 18:40:54

标签: regex cmake

我正在寻找一个正则表达式来匹配每个以“。”开头的文件。在目录中。

我正在使用CMake(来自CMake doc:“CMake期望正则表达式,而不是globs”)并且想要忽略每个以点开头的文件(隐藏文件)但是"\..*""^\..*"没有工作:(

奇怪的是:这有效(感谢rq的answer)并删除所有隐藏文件和临时文件(“〜”终止文件)

file(GLOB DOT ".*")
file(GLOB TILD "*~")

set (CPACK_SOURCE_IGNORE_FILES "${DOT};${TILD}")

但我找不到直接写入CPACK_SOURCE_IGNORE_FILES以获得相同结果的正确方法!

以下是此变量的“doc”。

5 个答案:

答案 0 :(得分:3)

听起来像GLOB可能就是你想要的。

试试这个。打开文件“test.cmake”并添加以下内容:

file(GLOB ALL "*")
file(GLOB DOT ".*")
file(GLOB NOTDOT "[^.]*")

message("All Files ${ALL}")
message("Dot files ${DOT}")
message("Not dot files ${NOTDOT}")

然后创建几个测试文件:

touch .dotfile
touch notdot

然后运行“cmake -P test.cmake”。输出是:

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

这是用cmake 2.6.0测试的。

答案 1 :(得分:1)

使用标准正则表达式语法:

^\..*

由于CMake显然不喜欢这样,它可能会使用类似的东西:

^\\..*

这只是猜测,因为我没有/使用CMake。

答案 2 :(得分:1)

以下单行将完成工作(隐藏隐藏和波浪号(“〜”)终止文件):

set(CPACK_SOURCE_IGNORE_FILES "/\\\\..*$;~$;${CPACK_SOURCE_IGNORE_FILES}")

答案 3 :(得分:0)

你需要逃脱它。

^\..*

答案 4 :(得分:0)

试试这个:

^[.].*