שימוש בגלוב עם ספריות ברובי

"לובש"קבצים (עם Dir.glob) ב- Ruby מאפשר לך לבחור רק את הקבצים הרצויים, כגון כל קבצי ה- XML, בספריה נתונה. למרות ש בלוג Dir הוא כמו ביטויים רגילים, זה לא. זה מוגבל מאוד בהשוואה ל רוביהביטויים הרגילים וקשורים יותר לתאי הבר של התרחבות הקונכיות.

ההפך מלהטוט, לאיתור כל הקבצים בספריה, ניתן לעשות זאת באמצעות מנהל שיטה.

דוגמא

הגלובל הבא יתאים לכל הקבצים שמסתיימים .rb בתוך ה ספרייה נוכחית. הוא משתמש בכרטיס תו כללי, הכוכבית. הכוכבית תתאים לאפס תווים או יותר, כך שכל קובץ שמסתיים .rb יתאים לגלוב הזה, כולל קובץ הנקרא בפשטות .rb, ללא כלום לפני סיומת הקובץ והתקופה שקדמה לה. שיטת הגלוב תחזיר את כל הקבצים התואמים לכללי הגלובוס כמערך, שניתן לשמור לשימוש אחר כך או לחזור עליו.

 #! / usr / bin / env אודם


 Dir.glob ('*. Rb'). כל אחד עושה | f |

 מכניס f

 סוף

Wildcards ועוד

יש רק כמה וכמה תווים כלליים שתוכלו ללמוד:

  • * - התאם לאפס תווים או יותר. גלובוס המורכב רק מהכוכבית ולא תווים או תווים כלליים אחרים יתאים לכל הקבצים בספריה הנוכחית. הכוכבית בדרך כלל משולבת עם סיומת קבצים אם לא יותר תווים כדי לצמצם את החיפוש.
  • ** - התאם לכל ספריות באופן רקורסיבי. זה משמש כדי לרדת לעץ הספריות ולמצוא את כל הקבצים בספריות המשנה של הספרייה הנוכחית, ולא רק לקבצים בספריה הנוכחית. תו כללי זה נחקר בקוד הדוגמה למטה.
    instagram viewer
  • ? - התאם לכל דמות אחת. זה שימושי למציאת קבצים ששמם בפורמט מסוים. לדוגמה, 5 תווים וסיומת .xml יכולים לבוא לידי ביטוי ... xml.
  • [a-z] - התאם לכל דמות בערכת התווים. הסט יכול להיות רשימת תווים או טווח המופרד עם תו המקף. קבוצות תווים עוקבות אחר אותו תחביר כמו ומתנהגים באותו אופן כמו קבוצות תווים בביטויים רגילים.
  • {א, ב} - התאם דפוס a או b. למרות שזה נראה כמכמת ביטוי רגילה, זה לא. לדוגמה, בביטוי רגיל, התבנית {1,2} יתאימו לתווים 1 או 2 'a'. בכפפות זה יתאים למחרוזת a1 או a2. ניתן לקנן דפוסים אחרים בתוך מבנה זה.

דבר אחד שיש לקחת בחשבון הוא רגישות במקרה. על מערכת ההפעלה לקבוע אם TEST.txt ו TeSt. טקסט התייחס לאותו קובץ. במערכות לינוקס ומערכות אחרות, מדובר בקבצים שונים. במערכת Windows אלה יתייחסו לאותו קובץ.

מערכת ההפעלה אחראית גם לסדר הצגת התוצאות. זה עשוי להיות שונה אם אתה נמצא ב- Windows לעומת לינוקס, לדוגמה.

דבר אחרון שיש לציין הוא דיר [גלובסטרינג] שיטת נוחות. זה זהה לתפקוד Dir.glob (גלובסטרינג) והוא גם נכון מבחינה סמנטית (אתה באינדקס של ספריה, כמו מערך). מסיבה זו יתכן ותראה דיר [] לעתים קרובות יותר מאשר Dir.glob, אבל הם אותו דבר.

דוגמאות לשימוש בתווי בר

תוכנית הדוגמה הבאה תדגים כמה שיותר תבניות בשילובים רבים ושונים.

 #! / usr / bin / env אודם


 # קבל את כל קבצי ה- .xml

 בימוי ['*. Xml']


 השג את כל הקבצים עם 5 תווים ותוסף .jpg

 דיר ['... jpg']


 # קבל את כל תמונות ה- jpg, png ו- gif

 דיר ['*. {Jpg, png, gif}']


 # צא לעץ הספרייה וקבל את כל תמונות ה- jpg

 # הערה: זה יגיש גם תמונות jpg בספרייה הנוכחית

 בימוי ['** / *. Jpg']


 # צא לכל המדריכים המתחילים עם יוני ומצא הכל

 # תמונות jpg.

 # הערה: זה יורד רק בספרייה אחת

 דיר ['יוני ** / *. Jpg']


 # צא לכל המדריכים המתחילים עם יוני והכל

 # ספריות משנה של ספריות החל מ- Uni ומציאות

 # כל .jpg תמונות

 דיר ['יוני ** / ** / *. Jpg']