代码之家  ›  专栏  ›  技术社区  ›  claf

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

  •  2
  • claf  · 技术社区  · 15 年前

    我正在寻找一个regex来匹配目录中以“.”开头的每个文件。

    我正在使用cmake(来自cmake文档:“cmake需要正则表达式,而不是globs”),并希望忽略以点(隐藏文件)开头的每个文件,但是 "\..*" "^\..*" 不起作用:

    奇怪的是:这是可行的(感谢RQ的 answer )并删除所有隐藏文件和临时文件(“~”终止文件)

    file(GLOB DOT ".*")
    file(GLOB TILD "*~")
    
    set (CPACK_SOURCE_IGNORE_FILES "${DOT};${TILD}")
    

    但我找不到合适的东西直接写进 CPACK_SOURCE_IGNORE_FILES 得到同样的结果!

    这里是“ doc “这个变量。

    5 回复  |  直到 14 年前
        1
  •  3
  •   richq luc    15 年前

    听起来“环球”可能是你想要的。

    试试这个。打开文件“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测试的。

        2
  •  1
  •   Hank Gay    15 年前

    使用标准regex语法:

    ^\..*
    

    因为Cmake显然不喜欢这样,所以它可能会使用如下内容:

    ^\\..*
    

    不过,这只是个猜测,因为我没有/没有使用cmake。

        3
  •  1
  •   Anonymous    14 年前

    下面的一行程序将完成这项工作(隐藏隐藏隐藏文件和tilde(“~”)终止的文件):

    set(CPACK_SOURCE_IGNORE_FILES "/\\\\..*$;~$;${CPACK_SOURCE_IGNORE_FILES}")
    
        4
  •  0
  •   Chase Seibert    15 年前

    你需要逃离它。

    ^\..*
    
        5
  •  0
  •   Alan Moore Chris Ballance    15 年前

    试试这个:

    ^[.].*