سؤال

أبحث عن regex لمطابقة كل ملف يبدأ ب "". في الدليل.

أنا أستخدم cmake (من cmake doc: "cmake تتوقع التعبيرات العادية، وليس globs") وتريد تجاهل كل ملف يبدأ مع نقطة (ملفات مخفية) ولكن "\..*" أو "^\..*" لا يعمل :(

الشيء الغريب: هذا يعمل (بفضل RQ إجابه) وإزالة كل ملفات مخفية وملفات TEMP ("~" تم إنهاء الملفات)

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

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

ولكن لا يمكنني العثور على الشيء الصحيح للكتابة مباشرة CPACK_SOURCE_IGNORE_FILES أن يكون لها نفس النتيجة!

هنا هو "Doc."من هذا المتغير.

هل كانت مفيدة؟

المحلول

يبدو أن الكروبات هي ربما ما تريد.

جرب هذا. افتح ملف "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.

نصائح أخرى

استخدام بناء جملة Regex القياسية:

^\..*

نظرا لأن Cmake لا يبدو أن هذا، فقد يستخدم شيئا مثل:

^\\..*

هذا مجرد تخمين، رغم ذلك، لأنني لا أملك / استخدم cmake.

سيقوم بطانة الواحد التالية بالعمل (إخفاء الملفات المخفية والبلدقة ("~")

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

تحتاج إلى الهروب منه.

^\..*

جرب هذا:

^[.].*
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top