אנדרואיד

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

Os humildes serão exaltados (Homilia Diária.1619: Sábado da 30.ª Semana do Tempo Comum)

Os humildes serão exaltados (Homilia Diária.1619: Sábado da 30.ª Semana do Tempo Comum)

תוכן עניינים:

Anonim

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

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

לינוקס find תחביר הפקודה

התחביר הכללי לפקודת find הוא כדלקמן:

find

  • תכונת options שולטת בטיפול בקישורים הסמליים, אפשרויות הבאגים ושיטת האופטימיזציה path… תכונת path… מגדירה את ספריית ההתחלה או הספריות בהן ימצאו חיפוש בקבצים. תכונת expression מורכבת מאפשרויות, דפוסי חיפוש ו פעולות מופרדות על ידי מפעילים.

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

בואו נסתכל על הדוגמא הבאה:

find -L /var/www -name "*.js"

  • האפשרות -L (אפשרויות) אומרת לפקודת find לעקוב אחר קישורים סימבוליים. /var/www (נתיב…) מציין את הספרייה -name "*.js חיפוש. שם (ביטוי) -name "*.js אומר find לחיפוש קבצים המסתיימים עם .js (קבצי JavaScript).

מצא קבצים לפי שם

מציאת קבצים לפי שם הוא ככל הנראה השימוש הנפוץ ביותר בפקודת find . כדי למצוא קובץ לפי שם השימוש, האפשרות -name עקבה אחר שם הקובץ שאתה מחפש.

לדוגמה, כדי לחפש קובץ בשם document.pdf בספרייה /home/linuxize , תשתמש בפקודה הבאה:

find /home/linuxize -type f -name document.pdf

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

find /home/linuxize -type f -iname document.pdf

הפקודה שלמעלה תתאים "Document.pdf", "DOCUMENT.pdf".. וכו '.

מצא קבצים לפי סיומת

חיפוש קבצים לפי סיומת זהה לחיפוש קבצים לפי שם. לדוגמה, כדי למצוא את כל הקבצים המסתיימים עם .log.gz /var/log/nginx אתה יכול להשתמש:

find /var/log/nginx -type f -name '*.log.gz'

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

כדי למצוא את כל הקבצים שאינם תואמים את regex *.log.gz אתה יכול להשתמש באפשרות -not . לדוגמה, כדי למצוא את כל הקבצים שלא מסתיימים ב- *.log.gz היית משתמש ב:

find /var/log/nginx -type f -not -name '*.log.gz'

מצא קבצים לפי סוג

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

כדי לחפש קבצים על סמך סוגם, השתמש באפשרות -type ואחד המתארים הבאים כדי לציין את סוג הקובץ:

  • f : קובץ רגיל d : תיקייה l : קישור סמלי c : התקני תווים b : חסימת התקנים p : called pipe (FIFO) s : socket

לדוגמה, כדי למצוא את כל הספריות בספריית העבודה הנוכחית, היית משתמש ב:

find. -type d

הדוגמה הנפוצה תהיה לשנות רקורסיבית את הרשאות קובץ האתר ל- 644 והרשאות ספרייה ל- 755 באמצעות הפקודה chmod :

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

מצא קבצים לפי גודל

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

  • b : חסימות 512 בתים (ברירת מחדל) c : בתים w : מילים על שני בתים k : קילובייט M : מגה בייט G : גיגה בייט

הפקודה הבאה תמצא את כל הקבצים של 1024 בתים בדיוק בתוך ספריית /tmp :

find /tmp -type f -size 1024c

פקודת החיפוש מאפשרת לך גם לחפש קבצים שהם גדולים או פחות מגודל שצוין.

בדוגמה הבאה אנו מחפשים את כל הקבצים הנמוכים מ- 1MB בתוך ספריית העבודה הנוכחית. שימו לב לסמל המינוס לפני ערך הגודל:

find. -type f -size -1M

find. -type f -size +1M

אתה יכול אפילו לחפש קבצים בטווח גודל. הפקודה הבאה תמצא את כל הקבצים שבין 1 ל- 2MB :

find. -type f -size +1M -size 21M

מצא קבצים לפי תאריך שינוי

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

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

בואו נגיד שלפני כמה ימים שינית את אחד מקבצי התצורה של dovecot, אך שכחת איזה מהם. אתה יכול לסנן בקלות את כל הקבצים בספריית /etc/dovecot/conf.d שמסתיימת ב- .conf ושונו בחמשת הימים האחרונים עם:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

להלן דוגמא נוספת לסינון קבצים על בסיס תאריך השינוי באמצעות -daystart . הפקודה שלהלן תפרט את כל הקבצים בספריית /home ששונו לפני 30 יום או יותר:

find /home -mtime +30 -daystart

מצא קבצים לפי הרשאות

האפשרות -perm מאפשרת לך לחפש קבצים על סמך הרשאות הקבצים.

לדוגמה, כדי למצוא את כל הקבצים עם הרשאות של 775 בדיוק בתוך ספריית /var/www/html , היית משתמש ב:

find /var/www/html -perm 644

אתה יכול להקדים קידומת של המצב המספרי במינוס - או לחתוך / .

כאשר לחתוך / משמש כקידומת, לפחות קטגוריה אחת (משתמש, קבוצה או אחרים) חייבים לכלול לפחות את הסיביות המתאימות לקובץ שתתאים.

שקול את הפקודה לדוגמה הבאה:

find. -perm /444

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

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

find. -perm -664

מצא קבצים לפי בעלים

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

לדוגמה, כדי לחפש את כל הקבצים והספריות שבבעלות המשתמש linuxize , היית מפעיל:

find / -user linuxize

הנה דוגמה בעולם האמיתי. נניח שאתה רוצה למצוא את כל הקבצים בבעלות www-data המשתמש ולשנות את הבעלות על הקבצים המותאמים מ- www-data ל- nginx :

find / -user www-data -type f -exec chown nginx {} ;

מצא ומחק קבצים

כדי למחוק את כל הקבצים התואמים, הוסף את אפשרות -delete לסוף ביטוי ההתאמה.

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

לדוגמה כדי למחוק את כל הקבצים המסתיימים ב- .temp מה /var/log/ היית משתמש:

find /var/log/ -name `*.temp` -delete השתמש באפשרות- -delete בזהירות -delete . שורת הפקודה 'חיפוש' מוערכת כביטוי ואם תוסיף -delete את האפשרות- -delete , הפקודה תמחק את הכל מתחת לנקודות ההתחלה שציינת.

כשמדובר בספריות, find יכול למחוק רק ספריות ריקות זהה ל- rmdir .

סיכום

הראנו לכם כיצד להשתמש בפקודת find עם אפשרויות וקריטריונים שונים.

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

מצא מסוף