איך למצוא קבצים באמצעות הפקודה find של לינוקס
הפקודה find של לינוקס משמשת לאיתור קבצים על פי שמם. מדריך הלינוקס שלפניך יעזור לך ללמוד את הדברים החשובים אודות פקודה מועילה במיוחד.
3 דרכים לבצע חיפוש בסיסי באמצעות הפקודה find של לינוקס
-
השימוש הבסיסי ביותר מאפשר לנו לראות את כל הקבצים והתיקיות כולל תיקיות המשנה.
$ find .
לנקודה (.) יש משמעות מיוחדת כאשר מנווטים בתוך מערכת הקבצים של לינוקס כי היא אומרת למערכת לבצע את הפעולה בתוך התיקייה הנוכחית.
-
כדי לחפש קובץ או תיקייה על פי שם נוסיף את האפשרות -name.
לדוגמה, נחפש קובץ או תיקייה ששמם "Music":
$ find . -name "Music"
-
ניתן לחפש בכל תיקייה כל עוד נציין את הנתיב אליה.
לדוגמה, בתוך התיקייה dev נחפש תיקייה או קובץ ששמם "dvd":
$ find /dev -name "dvd"
התוצאה:
/dev/dvd
אומרת שהקובץ או התיקייה נמצאים היכן שאנחנו מחפשים.
לעומת זאת, אם נחפש קובץ שלא קיים:
$ find /dev -name "kishkush"
לינוקס יחזיר תוצאה ריקה.
6 דרכים מועילות במיוחד לשימוש בפקודה find של לינוקס
הכיף לא נגמר כי קיימות אפשרויות יותר מתקדמות ולא פחות מועילות:
-
כדי לחפש בתוך תיקייה, אך לא בתיקיות המשנה, נוסיף את האפשרות -maxdepth:
$ find dir_name/ -maxdepth 1
-
כדי לאתר תיקיות או קבצים בלבד נוסיף את האפשרות -type.
כדי לחפש התאמה לתיקיות (directories):
$ find dir_name/ -type d
כדי לאתר קבצים (files):
$ find dir_name/ -type f
-
כדי לחפש קבצים בלבד על פי שם נשלב את האפשרות -name עם האפשרות -type.
לדוגמה, נחפש את הקובץ "file_name.txt" בתוך תיקייה ששמה dir_name:
$ find dir_name/ -type f -name "file_name.txt"
-
אנחנו יכולים לאתר קבצים ותיקיות על פי דפוסים בשם.
קבצים שמתחילים במילה pong:
$ find dir_name/ -type f -iname "pong*"
אחרי הביטוי pong הוספתי כוכבית (*) שהיא wild card שאומר למערכת לחפש כל דבר שמתחיל ב-pong.
קבצים שמסתיימים בסיומת php:
$ find dir_name/ -type f -name "*.php"
-
אפשרות נוספת היא מציאת קבצים על בסיס הפעם האחרונה שהם השתנו.
האפשרות -mmin משמשת לאיתור קבצים על פי הזמן בדקות.
מצא את הקבצים שהשתנו ב-10 הדקות האחרונות:
$ find dir_name/ -type f -mmin -10
או קבצים שהשתנו לפני יותר מ-10 דקות:
$ find dir_name/ -type f -mmin +10
ומה לגבי קבצים שהשתנו לפני יותר מ-10 אבל פחות מ-20 דקות?
$ find dir_name/ -type f -mmin +10 -mmin -20
האפשרות -mtime משמשת לחיפוש לפי ימים.
לדוגמה, מצא את הקבצים שהשתנו בשלושת הימים האחרונים:
$ find dir_name/ -type f -mtime -3
או כאלה שהשתנו לפני יותר מ-3 ימים:
$ find dir_name/ -type f -mtime +3
-
לסיום, נחפש על פי נפח התיקייה או הקובץ.
כדי למצוא תיקיות או קבצים ריקים:
$ find dir_name/ -empty
קבצים הגדולים מ-10 מגה בייט:
$ find dir_name/ -type f -size +10M
או קבצים הקטנים מ-100 קילו בייט:
$ find dir_name/ -type f -size -100k
ומה לגבי קבצי ענק שמשקלם עולה על 10 גיגה?
$ find dir_name/ -type f -size +10G
מקור חשוב מאוד ללימוד הפקודה find של לינוקס
במדריך זה גירדתי את קצה היכולת של הפקודה find כדי ללמוד עוד אודות הפקודה המופלאה הזו כדאי להיוועץ ב-man:
$ man find
עד עכשיו ראינו שימוש בסיסי בפקודה find. בחלק הבא של המדריך נלמד לשלב את find עם פקודות נוספות כדי לקבל את מה שאנחנו רוצים.
3 אפשרויות לסינון לפני החיפוש כאשר משתמשים ב-find
אחד העקרונות החשובים של לינוקס הוא שפקודה צריכה לעשות דבר אחד בלבד. הפקודה find היא לא יוצאת דופן מבחינה זו, כי הדבר היחיד שהיא יודעת לעשות הוא למצוא קבצים. אבל מה שעוד יותר מעניין זו העובדה שניתן לשלב פקודות כדי לקבל פונקציות מועילות. ביתר המדריך נראה כיצד לשלב את find עם פקודות נוספות כדי לעשות דברים חשובים במיוחד.
בלינוקס פקודה צריכה לעשות דבר אחד בלבד, ולכן הרבה פעמים נצטרך לשלב פקודות כדי לקבל בדיוק את מה שאנחנו רוצים.
1. החלפת רווחים בשמות קבצים ותיקיות
כדי להחליף רווחים בשמות קבצים ותיקיות נשלב את הפקודות find ו-rename על ידי זה שנוסיף ביניהם צינור (|).
נטפל בתיקיות:
$ find -name "* *" -type d | rename 's/ /_/g'
נטפל בקבצים:
$ find -name "* *" -type f | rename 's/ /_/g'
-
ייתכן שהפקודה rename לא קיימת אצלך במערכת אז ברגע שתריץ את הפקודה תפעל לפי הוראות המערכת כדי להתקין אותה כי היא יכולה מאוד לעזור לך.
-
המדריך לינוקס - צינורות והפניות מרחיב על הנושא ומאוד מומלץ לקרוא אותו.
2. בעלות על קבצים ותיקיות
אחד הנושאים החשובים בלינוקס הוא ניהול הרשאות ומשתמשים עליו כתבתי בהרחבה במדריך ניהול הרשאות ומשתמשים בלינוקס.
נשתמש ב-find כדי למצוא קבצים עם הרשאה 600:
$ find dir_name/ -perm 600
נשנה את הרשאות כל הקבצים בתיקייה ל-644 וכל התיקיות ל-755:
$ find dir_name/ -type d -exec chmod 0755 {} \;
$ find dir_name/ -type f -exec chmod 0644 {} \;
- הפקודה chmod משמשת לשינוי הרשאות.
3. מחיקת קבצים ותיקיות
זהירות!! אתה לא יכול לשחזר קבצים ותיקיות אותם מחקת באמצעות הטרמינל.
הפקודה הבאה תמצא את קבצי הלוג:
$ find dir_name/ -maxdepth 1 -type f -name "*.log"
עכשיו שאנחנו יודעים איך למצוא את הקבצים נוסיף את הפקודה rm כדי למחוק אותם:
$ find dir_name/ -maxdepth 1 -type f -name "*.log" -exec rm {} \;
אולי גם זה יעניין אותך:
ניהול הרשאות, משתמשים וקבוצות בלינוקס
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.