2009-04-07 20 views
2

"。"で始まるすべてのファイルにマッチする正規表現を探しています。ディレクトリに保存します。Unix下の隠しファイルの正規表現

私はCMakeの(CMakeのドキュメントから:「CMakeの正規表現ではなく、グロブ期待する」)を使用していますし、ドット(隠しファイル)を初め、すべてのファイルを無視したいが"\..*""^\..*"は動作しません:(

奇妙なこと:これは(RQのanswerのおかげで)動作し、すべての隠しファイルや一時ファイルを削除(「〜」ファイルを終了)

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

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

しかし、私はCPACK_SOURCE_IGNORE_FILESに直接書き込むために正しいことを見つけることができません同じ結果が得られました!

ここには、この変数の "doc"があります。私はしていないので、しかし、ただの推測だ

^\\..* 

:cmakeのは、どうやらこれを好きではないので、それはのようなものを使用することができ

^\..* 

:標準正規表現の構文を使用して

答えて

3

GLOBが何をしたい、おそらくあるような音。

これを試してください。ファイル "test.cmake" を開き、次の行を追加します。 "cmakeのの-Pのtest.cmake" を実行し

touch .dotfile 
touch notdot 

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

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

は、次にテストファイルのカップルを作成します。出力は次のとおりです。

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でテストされました。

+0

"CMakeはグロブではなく正規表現を期待していますが"あなたの解決策は、私が望むすべてのCMake変数を使用して、奇妙なこと:あなたのソリューションを使ってファイルをリストするのを避けるために、変数に直接書き込むことができません。 – claf

1

CMakeを持っている/使用する。

+0

私はCMakeのに使用する正規表現を必要とし、あなたの表現は私に結果を与えます: " CMakeエラー:無効なエスケープシーケンス\ " – claf

+0

あなたはスラッシュを追加することを躊躇しているかもしれません/^\..*/ –

+0

CMakeは間違っています。これは、あなたが尋ねたことをするための標準的な正規表現構文です。たぶんあなたは^ \\ .. *を使う必要がありますか? –

0

あなたはそれをエスケープする必要があります。

^\..* 
0

これを試してみてください:

^[.].* 
+0

は動作しません(エラーは発生しません) – claf

1

次のワンライナーが作業を行います(「〜」(隠されたとチルダを隠す)ファイルを終了):

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