איך למצוא קבצים באמצעות הפקודה find של לינוקס

מחבר:
בתאריך:

הפקודה find של לינוקס משמשת לאיתור קבצים על פי שמם. מדריך הלינוקס שלפניך יעזור לך ללמוד את הדברים החשובים אודות פקודה מועילה במיוחד.

 

3 דרכים לבצע חיפוש בסיסי באמצעות הפקודה find של לינוקס

  1. השימוש הבסיסי ביותר מאפשר לנו לראות את כל הקבצים והתיקיות כולל תיקיות המשנה.

    $ find .

    לנקודה (.) יש משמעות מיוחדת כאשר מנווטים בתוך מערכת הקבצים של לינוקס כי היא אומרת למערכת לבצע את הפעולה בתוך התיקייה הנוכחית.

  2. כדי לחפש קובץ או תיקייה על פי שם נוסיף את האפשרות -name.

    לדוגמה, נחפש קובץ או תיקייה ששמם "Music":

    $ find . -name "Music"
  3. ניתן לחפש בכל תיקייה כל עוד נציין את הנתיב אליה.

    לדוגמה, בתוך התיקייה dev נחפש תיקייה או קובץ ששמם "dvd":

    $ find /dev -name "dvd"

    התוצאה:

    /dev/dvd

    אומרת שהקובץ או התיקייה נמצאים היכן שאנחנו מחפשים.

    לעומת זאת, אם נחפש קובץ שלא קיים:

    $ find /dev -name "kishkush"

    לינוקס יחזיר תוצאה ריקה.

 

6 דרכים מועילות במיוחד לשימוש בפקודה find של לינוקס

הכיף לא נגמר כי קיימות אפשרויות יותר מתקדמות ולא פחות מועילות:

  1. כדי לחפש בתוך תיקייה, אך לא בתיקיות המשנה, נוסיף את האפשרות -maxdepth:

    $ find dir_name/ -maxdepth 1
  2. כדי לאתר תיקיות או קבצים בלבד נוסיף את האפשרות -type.

    כדי לחפש התאמה לתיקיות (directories):

    $ find dir_name/ -type d

    כדי לאתר קבצים (files):

    $ find dir_name/ -type f
  3. כדי לחפש קבצים בלבד על פי שם נשלב את האפשרות -name עם האפשרות -type.

    לדוגמה, נחפש את הקובץ "file_name.txt" בתוך תיקייה ששמה dir_name:

    $ find dir_name/ -type f -name "file_name.txt"
  4. אנחנו יכולים לאתר קבצים ותיקיות על פי דפוסים בשם.

    קבצים שמתחילים במילה pong:

    $ find dir_name/ -type f -iname "pong*"

    אחרי הביטוי pong הוספתי כוכבית (*) שהיא wild card שאומר למערכת לחפש כל דבר שמתחיל ב-pong.

    קבצים שמסתיימים בסיומת php:

    $ find dir_name/ -type f -name "*.php"
  5. אפשרות נוספת היא מציאת קבצים על בסיס הפעם האחרונה שהם השתנו.

    האפשרות -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
  6. לסיום, נחפש על פי נפח התיקייה או הקובץ.

    כדי למצוא תיקיות או קבצים ריקים:

    $ 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 {} \;

 

אולי גם זה יעניין אותך:

ניווט במערכת הקבצים של לינוקס

חיפוש בתוך קבצים עם GREP

ניהול הרשאות, משתמשים וקבוצות בלינוקס

לינוקס - צינורות והפניות

 

לכל המדריכים בסדרת הלינוקס

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

הוסף תגובה חדשה

 

= 4 + 9