تعبير منتظم للملفات المخفية ضمن UNIX
سؤال
أبحث عن 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}")
تحتاج إلى الهروب منه.
^\..*
جرب هذا:
^[.].*