באמצעות לינוקס ו- Unix Command: למצוא

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

תחביר עבור הפקודה find :

למצוא [נתיב] [ביטוי]

תיאור

דף ידני זה מתעד את גרסת גנו של חיפוש . הפקודה מוצאת חיפושים בעץ הספרייה המושרש בכל שם קובץ נתון על-ידי הערכת הביטוי הנתון משמאל לימין, בהתאם לכללי הקדימות (ראה סעיף על אופרטורים להלן), עד שהתוצאה ידועה; במילים אחרות, הצד השמאלי הוא שקר עבור פעולות, נכון או , באיזה שלב למצוא את המהלכים על שם הקובץ הבא.

הטיעון הראשון שמתחיל ב:

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

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

ביטויים

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

אפשרויות

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

-יומי מדוד פעמים (עבור -amin, atime, -minmin, זמני, -minmin ו -mtime ) מתחילת היום ולא מלפני 24 שעות.
-עוֹמֶק לעבד את כל התוכן של הספרייה לפני הספרייה עצמה.
-לעקוב אחר הימנעות מקישורים סמליים. פירושו - נולף .
- עזרה או - עזרה הדפס סיכום של השימוש בשורת הפקודה של חיפוש ויציאה.
-maxdepth [number] צא לכל היותר במספר רמות (מספר שלם שלילי) של ספריות מתחת לארגומנטים של שורת הפקודה. הביטוי -maxdepth 0 פירושו רק להחיל את הבדיקות והפעולות על הארגומנטים של שורת הפקודה.
-mindepth [number] אין להחיל בדיקות או פעולות ברמות פחות מהמספר (מספר שלם לא שלילי). הביטוי -mindepth 1 פירושו לעבד את כל הקבצים פרט לארגומנטים של שורת הפקודה.
-הר אין לרדת בספריות על מערכות קבצים אחרות. שם חלופי עבור -xdev , עבור תאימות עם כמה גירסאות אחרות של למצוא .
-נולף אל תבצע אופטימיזציה על ידי ההנחה כי ספריות להכיל 2 subdirectories פחות מאשר לספור את הקישור הקשיח. *
גרסה orv - Version הדפס את מספר הגירסה ופעל.
-xdev אין לרדת בספריות על מערכות קבצים אחרות.

* אפשרות זו דרושה בעת חיפוש במערכות קבצים שאינן עומדות באמנת קישור הספריות של Unix, כגון קובצי CD-ROM או MS-DOS או נקודות טעינה של AFS. כל ספרייה על מערכת הקבצים Unix רגיל יש לפחות 2 קישורים קשים: השם שלה ואת שלה . (נקודה). בנוסף, תיקיות המשנה שלה (אם בכלל) כל אחת יש .. רשומה המקושרים לספרייה זו.

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

בדיקות

ניתן להגדיר ארגומנטים מספריים כדלקמן:

+ n עבור יותר מ n.
-n עבור פחות מ n.
n עבור בדיוק n.
-amin n הקובץ היה האחרון לגשת לפני דקות.
-יותר [קובץ] הקובץ היה האחרון גישה יותר לאחרונה מאשר הקובץ השתנה. -השפעה נוספת מושפעת על-ידי-המשך רק אם -כפי שבא לפני -יותר על שורת הפקודה.
-atime n הקובץ היה האחרון גישה n * לפני 24 שעות.
-minmin n הסטטוס של הקובץ השתנה לאחרונה לפני דקות.
-יותר [קובץ] הסטטוס של הקובץ השתנה לאחרונה יותר משהשתנה הקובץ.
- cnewer מושפע על-ידי מעקב אחר רק אם -מתרחש בהמשך - עוד בשורת הפקודה.
-ימים n סטטוס הקובץ השתנה לאחרונה לפני * לפני 24 שעות.
-ריק הקובץ ריק והוא גם קובץ רגיל או ספרייה.
-שֶׁקֶר תמיד שקר.
- סוג [סוג] הקובץ נמצא במערכת קבצים מסוג מסוים. סוגי מערכות הקבצים החוקיים משתנים בין גרסאות שונות של Unix; רשימה חלקית של סוגי מערכות קבצים המתקבלות בגירסה כלשהי של Unix או אחרת היא: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. באפשרותך להשתמש -פרינט עם ההנחיה% F כדי לראות את סוגי מערכות הקבצים שלך.
- nid מזהה הקבוצה המספרי של הקובץ הוא n .
-קבוצות [gname] הקובץ שייך לקבוצה gname (מזהה קבוצה מספרי).
-ilname [דפוס] כמו שם, אבל המשחק הוא רגיש במקרה.
-iname [דפוס] כמו שם , אבל המשחק הוא לא רגיש במקרה. לדוגמה, דפוסי fo * ו F ?? התאם את שמות הקבצים Foo , FOO , foo , FOo וכו '.
- num הקובץ כולל מספר inode.
נתיב [דפוס] כמו נתיב , אבל המשחק הוא רגיש במקרה.
-iregex [דפוס] כמו גרג'קס, אבל המשחק הוא חסר חשיבות.
- קישורים n לקובץ יש קישורים n .
-lname [דפוס] הקובץ הוא קישור סימבולי שתוכנו תואם לתבנית הקליפה. המטא-תווים אינם מטפלים / או . במיוחד.
-Mmin n נתוני הקובץ השתנו לאחרונה לפני מספר דקות.
-mtime n נתוני הקובץ השתנו לאחרונה לפני כ -24 שעות.
-שם [דפוס] בסיס שם הקובץ (הנתיב עם הספריות המובילות הוסרו) תואם לדגם פגז. המטא-תווים ( * , ו- [] ) אינם תואמים ל- a . בתחילת שם הבסיס. כדי להתעלם ספריה ואת הקבצים תחת זה, השתמש -פרח ; ראה דוגמה בתיאור נתיב .
-Newer [file] הקובץ שונה לאחרונה יותר מקובץ . הביטוי - יותר משפיע על-ידי-המשך רק אם -מגיע לפני -Newer על שורת הפקודה.
-יותר אין משתמש המתאים למזהה המשתמש המספרי של הקובץ.
- קבוצה אין קבוצה המתאימה למזהה הקבוצה המספרי של הקובץ.
נתיב [דפוס] שם הקובץ תואם לדפוס תבנית פגז. המטא-תווים אינם מטפלים / או . במיוחד; כך, למשל, למצוא. -path './sr*sc ידפיס רשומה עבור ספריה הנקראת ./src / misc (אם קיימת). כדי להתעלם עץ ספרייה שלמה, השתמש- פונה במקום לבדוק כל קובץ בעץ. לדוגמה, כדי לדלג על ספריית src / emacs וכל הקבצים והספריות שמתחתיו, ולהדפיס את השמות של הקבצים האחרים שנמצאו, בצע פעולה כזו: חפש. -path './src / emacs' -Proune -o-print
-מצב [מצב] חתיכות ההרשאה של הקובץ הן בדיוק [מצב] (אוקטלי או סמלי). מצבים סמליים משתמשים במצב 0 כנקודת מוצא.
-מצב -Mode כל סיביות ההרשאה [מצב] מוגדרות עבור הקובץ.
מצב + מצב + כל סיביות הרשאה [מצב] מוגדרות עבור הקובץ.
-regex [דפוס] שם הקובץ תואם לתבנית הביטוי הרגיל. זה משחק על כל הדרך, לא חיפוש. לדוגמה, כדי להתאים לקובץ בשם ./fubar3, באפשרותך להשתמש בביטוי הרגיל . * Bar. או *. * * 3 , אך לא b. * r3 .
-size n [bckw] הקובץ משתמש ב- n יחידות שטח. היחידות הן 512 בתים בתים כברירת מחדל, או אם b אחרי n , בתים אם c אחרי n , קילובייט אם k עוקב אחר n , או 2 ביט מילים אם w אחרי n . הגודל אינו נחשב בלוקים עקיפים, אך הוא מונה בלוקים בקבצים דלילים שאינם מוקצים בפועל.
-נָכוֹן תמיד נכון.
סוג c הקובץ הוא מסוג c :
בלוק (שנאגרו) מיוחד
c אופי (unbuffered) מיוחד
ד מַדרִיך
עמ ' צינור בשם (FIFO)
ו קובץ רגיל
l קישור סמלי
s שֶׁקַע
ד door (Solaris)
-נייד n מזהה המשתמש המספרי של הקובץ הוא n .
- בשימוש n הקובץ היה האחרון גישה n ימים לאחר מעמדה השתנה לאחרונה.
-משתמש uname הקובץ נמצא בבעלות User uname (מזהה משתמש מספרי).
-גודל c אותו סוג, אלא אם הקובץ הוא קישור סמלי. עבור קישורים סמליים: אם לא ניתנו, נכון אם הקובץ הוא קישור לקובץ מסוג c ; אם-ניתנו, נכון אם c הוא l. במילים אחרות, עבור קישורים סמליים,
-ttype בודק את סוג הקובץ שלא נבדק .

פעולות

הפקודה -exec;

ביצוע פקודה ; אם המצב 0 מוחזר. כל הארגומנטים הבאים כדי למצוא נלקחים להיות טיעונים לפקודה עד טיעון המורכב ';' הוא נתקל. המחרוזת `{} 'מוחלפת בשם הקובץ הנוכחי המעובד בכל מקום בו היא מתרחשת בארגומנטים לפקודה, לא רק בארגומנטים שבהם היא לבדה, כמו בגירסאות מסוימות של חיפוש . שני המבנים הללו עשויים להימלט (עם '\') או לצטט אותם כדי להגן עליהם מפני הרחבת על ידי פגז. הפקודה מבוצעת בספריית ההתחלה.

קובץ

נָכוֹן; כמו -Ls אבל לכתוב לקובץ כמו- print.

- קובץ הדפסה

נָכוֹן; להדפיס את שם הקובץ המלא לקובץ קובץ . אם הקובץ אינו קיים כאשר הוא מופעל, הוא נוצר; אם היא קיימת, היא קטועה. שמות הקבצים "/ dev / stdout" ו- "/ dev / stderr" מטופלים במיוחד; הם מתייחסים הפלט הסטנדרטי פלט שגיאה תקן, בהתאמה.

-פרינט 0 הקובץ

נָכוֹן; כמו-print0 אבל לכתוב לקובץ כמו- print.

- פורמט קובץ fprintf

נָכוֹן; כמו-printf אבל לכתוב לקובץ כמו- print.

הפקודה

כמו -exec אבל לשאול את המשתמש הראשון (על הקלט הסטנדרטי); אם התגובה אינה מתחילה ב- y או ב- Y, אל תפעיל את הפקודה ותחזור כוזב.

-הדפס

נָכוֹן; הדפס את שם הקובץ המלא בפלט הסטנדרטי, ואחריו קו חדש.

-print0

נָכוֹן; הדפס את שם הקובץ המלא בפלט הסטנדרטי, ואחריו תו null. זה מאפשר שמות קבצים המכילים newlines להיות מפורש כראוי על ידי תוכניות לעבד את מוצא מוצא .

פורמט

נָכוֹן; פורמט הדפסה על הפלט הסטנדרטי, פירוש הוראות \ "בריחה \". רוחב שדה ו precisions ניתן להגדיר כמו עם `printf 'C פונקציה. שלא כמו-הדפסה, -הפרינטף אינו מוסיף קו חדש בסוף המחרוזת. הבריחות וההוראות הן:

פעמון אזעקה.

\ b

Backspace.

\ c

הפסק להדפיס מיד מתבנית זו ושטוף את הפלט.

\ f

הזנת טופס.

\ n

שורה חדשה.

\ r

החזרת המרכבה.

\ t

הכרטיסייה אופקית.

\ v

הכרטיסייה אנכית.

\\

ריקבון מילולי ('\').

\ NNN

הדמות אשר קוד ASCII שלה הוא NNN (אוקטלי).

תו '\' ואחריו כל תו אחר מטופל כתו רגיל, כך ששניהם מודפסים.

קה

סימן אחוז מילולי.

זמן הגישה האחרון של הקובץ בתבנית המוחזרת על ידי פונקציית C 'ctime'.

% K

זמן הגישה האחרון של הקובץ בתבנית שצוין על ידי k , שהוא גם '@' או הוראה עבור פונקציית C `strftime '. הערכים האפשריים עבור k מפורטים להלן; חלקן לא יהיו זמינות בכל המערכות, בשל הבדלים ב 'strftime' בין מערכות.

@

שניות מאז 1 בינואר 1970, 00:00 GMT.

שדות זמן:

ח

שעה (00.23)

אני

שעה (01..12)

k

שעה (0..23)

l

שעה (1..12)

M

דקה (00..59)

עמ '

של AM או PM של המקום

ייצור

שעה, 12 שעות (hh: mm: ss [AP] M)

S

השני (00..61)

T

שעה, 24 שעות (hh: mm: ss)

איקס

ייצוג זמן של אזור (H: M: S)

Z

אזור זמן (למשל, EDT), או שום דבר אם לא אזור הזמן הוא detinable

שדות תאריך:

א

שם השבוע המקוצר של המקום (Sun..Sat)

א

שם השבוע המלא של המקום, אורך משתנה (יום ראשון ... יום שבת)

שם החודש המקוצר של המקום (Jan ..Dec)

ב

שם החודש המלא של המקום, אורך משתנה (ינואר ... דצמבר)

c

תאריך ושעה של המקום (Sat Nov 04 12:02:33 EST 1989)

ד

יום החודש (01..31)

ד

תאריך (mm / dd / yy)

ח

כמו ב

י

יום של השנה (001.366)

M

חודש (01..12)

U

שבוע מספר השנה עם יום ראשון ליום הראשון בשבוע (00..53)

w

יום בשבוע (0..6)

W

שבוע מספר השנה עם יום שני ליום הראשון בשבוע (00..53)

איקס

ייצוג תאריך מקומי (mm / dd / yy)

y

שתי הספרות האחרונות של השנה (00..99)

Y

שנה (1970 ...)

% b

גודל הקובץ בבלוקים של 512 בתים (מעוגל).

% c

המעמד האחרון של הקובץ משנה את הזמן בתבנית המוחזרת על ידי פונקציית C 'ctime'.

% C

המעמד האחרון של הקובץ משנה את הזמן בפורמט שצוין על ידי k , שהוא זהה ל-% A.

% d

עומק הקובץ בעץ המדריך; 0 פירושו שהקובץ הוא ארגומנט של שורת פקודה.

% f

שם הקובץ עם כל הספריות המובילות הוסרו (רק את הרכיב האחרון).

% F

סוג מערכת הקבצים שהקובץ נמצא בה; ערך זה יכול לשמש עבור - סוג.

% g

שם הקבוצה של הקובץ, או מזהה הקבוצה המספרי, אם לקבוצה אין שם.

% G

מזהה הקבוצה המספרי של הקובץ.

% h

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

% H

ארגומנט שורת פקודה תחת איזה קובץ נמצא.

%אני

מספר INode של הקובץ (בעשרונית).

% k

גודל הקובץ בקוביות 1K (מעוגל).

% l

אובייקט של קישור סימבולי (מחרוזת ריקה אם הקובץ אינו קישור סמלי).

%M

חתיכות הרשאת הקובץ (באוקטל).

% n

מספר הקישורים הקשים לקובץ.

% p

שם הקובץ.

% P

שם הקובץ עם שם ארגומנט שורת הפקודה שמתחתיו הוא הוסר.

% s

גודל הקובץ בבתים.

% t

זמן השינוי האחרון של הקובץ בתבנית שהוחזרה על ידי פונקציית C 'ctime'.

% T k

זמן השינוי האחרון של הקובץ בתבנית שצוין על ידי k , שהוא זהה עבור% A.

% u

שם המשתמש של הקובץ או מזהה המשתמש המספרי אם למשתמש אין שם.

% U

זיהוי המשתמש המספרי של הקובץ.

תו '%' ואחריו כל תו אחר נמחק (אך התו השני מודפס).

-לִגזוֹם

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

-ls

נָכוֹן; ברשימה הנוכחית הקובץ בפורמט ls -dils על פלט סטנדרטי. סעיפי הבלוק הם של 1K בלוקים, אלא אם כן משתנה הסביבה POSIXLY_CORRECT מוגדר, ובמקרה זה משמשים בלוקים של 512 בתים.

אופרטורים

פירוט לפי סדר יורד:

( expr )

כוח עדיפות.

! expr

נכון אם expr הוא שקר.

-אין expr

כמו ! expr .

expr2 expr2

ו (משתמע); expr2 אינו מוערך אם expr1 הוא שקר.

expr1- a expr2

כמו expr1 expr2 .

expr1 -and expr2

כמו expr1 expr2 .

expr1 -o expr2

אוֹ; expr2 אינו מוערך אם expr1 נכון.

expr1- או expr2

כמו expr1 -o expr2 .

expr1 , expr2

רשימה; הן expr1 והן expr2 מוערכים תמיד. ערך expr1 נמחק; ערך הרשימה הוא הערך של expr2 .

דוגמאות

למצוא / home -user ג 'ו

מצא את כל הקבצים תחת הספרייה / הבית בבעלות joe המשתמש.

מצא / usr-name * סטאט

מצא את כל הקבצים תחת הספרייה / usr מסתיים ".

מצא / var / spool -mtime +60

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

למצוא / tmp -name הליבה-סוג f-print xargs / bin / rm -f

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

מצא / tmp -name הליבה-סוג f-print0 | xargs -0 / bin / rm -f

מצא קבצים בשם הליבה בתוך או מתחת לספרייה / tmp ולמחוק אותם, עיבוד קבצים בצורה כזו כי קובץ או ספריה שמות המכילים ציטוטים בודדים או כפולה, רווחים או שורות חדשות מטופלים כראוי. המבחן- נימה מגיע לפני הבדיקה מסוג כדי להימנע מלהצטרך לקרוא stat (2) על כל קובץ.

למצוא . -tpe f-fileec '{}' \;

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

(/% -perm -4000 -fprintf /root/suid.txt '% # m% u% p \ n' \), \ \ (-size + 100M -fprintf /root/big.txt '% -10% P n' \)

לחצות את מערכת הקבצים רק פעם אחת, הרישום setuid קבצים וספריות לתוך / root /suid.txt ו קבצים גדולים לתוך / root /big.txt .

מצא $ HOME -mtime 0

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

0 , הקובץ יצטרך שינוי בעבר אשר לפני פחות מ 24 שעות.

למצוא . 664

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

למצוא . -perm -664

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

למצוא . -פרט / 222

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

למצוא . -מצאת / 220 למצוא. -pmm / u + w, g + w למצוא. -פרמטר / u = w, g = w

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

למצוא . -מצגת -220 . -Pmm -g + w, u + w

שתי פקודות אלה לעשות את אותו הדבר; לחפש קבצים אשר ניתן לכתוב על ידי הבעלים שלהם ואת הקבוצה שלהם.

למצוא . -perm-444 -perm / 222! -פירם / 111 למצוא. -perm -a + r -perm / a + w! -perm / a + x

שתי פקודות אלה הן חיפוש עבור קבצים קריאים עבור כולם (-pmm-444 או -perm-r + r), יש לפחות להגדיר את ערכת bit (-perm / 222 או -perm / a + w) אך אינם ניתנים להפעלה עבור כל אחד (! -perm / 111 ו-! -perm / a + x בהתאמה)

חשוב: השתמש בפקודת הגבר ( % man ) כדי לראות כיצד נעשה שימוש בפקודה במחשב הספציפי שלך.