Linux գտնել ընդհատել որոնումը ըստ պայմանի: Find Command. Հզոր ֆայլեր գտնել Linux-ում: Տեղեկատու ծառի ակնարկ

Շատ հաճախ ձեզ անհրաժեշտ է շտապ գտնել ինչ-որ ֆայլ ֆայլային համակարգում, բայց դուք գաղափար չունեք, թե որտեղ է այն: Եվ եթե ֆայլ գտնելու համար GUI կոմունալ ծառայությունները հոգնած են կամ ընդհանրապես տեղադրած չունեք GUI կամ այն ​​սկզբունքորեն չեք օգտագործում, ապա Linux-ում ֆայլերի, թղթապանակների և ֆայլի մասերի որոնման ընդարձակ հրամաններ կգան: փրկարարական.

Տվյալների բազայում փնտրեք ֆայլ անունով:
Locate հրամանը կարող է օգտագործվել ֆայլ(ներ) որոնելու համար՝ ըստ ֆայլի անվան մասի: Հրամանը սկանավորում է անունների բազան և տալիս է որոնման ֆայլ(ներ)ի ուղին: Խորհուրդ ենք տալիս հրամանը գործարկել -i տարբերակով. տեղորոշել -i՝ մեծատառերի անզգույշ որոնման համար:
Օրինակ:

[էլփոստը պաշտպանված է]:~$ տեղորոշել -i .ogg
/home/subsanek/անհայտ - անհայտ/01 - անհայտ 1 - ???.ogg
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/book.oggvorbis.html
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/intro.oggvorbis.html
/usr/share/kde4/apps/bball/bounce.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/a.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/b.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/c.ogg
(կտրված)


-հրամանի կանչը գտել է համակարգի բոլոր ֆայլերը ogg ընդլայնմամբ:
գտնել ֆայլերի որոնումները շատ արագ, բայց այն պարզապես նայում է տվյալների բազայի անունների ցանկին, և եթե ֆայլը վերջերս է, մեծ հավանականություն կա, որ այն չի գտնվի:
Տվյալների բազայի թարմացում:
Դուք կարող եք թարմացնել locate հրամանի տվյալների բազան հրամանով (որպես արմատ).
թարմացված բ
Ընթեռնելի արդյունք:
Հաճախ locate հրամանը կարող է տալ բազմահազար արդյունք, որը պարզապես թարթում է էկրանի առջև և ոչինչ չի անում ձեր աչքերի համար, դրանից խուսափելու համար կարող եք ելքի արդյունքը վերահղել դեպի կոնտեյներ.
տեղավորել -i .ogg | ավելի քիչ
Կարող եք նաև նշել, թե քանի արդյունք պետք է ցուցադրվի -n տարբերակով.
տեղորոշել -i .ogg -n 10
- ցուցադրում է առաջին 10 արդյունքները:

Որոնեք ֆայլեր իրական սկանավորմամբ:
Find հրամանը սկանավորում է ֆայլային համակարգը՝ ֆայլ գտնելու համար, ինչը այս գործիքը դարձնում է դանդաղ, բայց արդյունավետ:
Անունով որոնելու համար պետք է նշեք -name ստեղնը
Օրինակ:
find -name filename.txt
Լռելյայնորեն գտնեք որոնումները ռեկուրսիվորեն ընթացիկ գրացուցակում:

Տեքստի որոնում ըստ տեքստի հատվածի:
Լեգենդար grep հրամանը կարող է ծառայել գրեթե ցանկացած նպատակի: Ես սիրում եմ օգտագործել այն ոչ միայն աղբյուրի գրացուցակում ճիշտ ֆայլերը գտնելու համար: Դուք կարող եք նաև օգտագործել grep կանոնավոր արտահայտություններ որոնելու համար:
հրամանի նախատիպը.
grep «որոնման օրինաչափություն» file_to_search
Օրինակ:
grep -R «տեքստ» /
-command-ը համակարգի բոլոր տեքստային ֆայլերում ռեկուրսիվ կփնտրի բառի տեքստը:
Grep-ն ունի տպավորիչ թվով տարբերակներ, որոնք ձեզ կարող են շատ հաճախ անհրաժեշտ լինել.

[էլփոստը պաշտպանված է]:~$ grep -- օգնություն
Օգտագործում՝ grep [KEY]... PATTERN [FILE]...
Փնտրեք PATTERN յուրաքանչյուր Ֆայլի կամ ստանդարտ մուտքագրման մեջ:
Լռելյայնորեն, PATTERN-ը պարզ կանոնավոր արտահայտություն է (BRE):
Օրինակ՝ grep -i «բարև աշխարհ» menu.h main.c

Ընտրելով կանոնավոր արտահայտության տեսակ և մեկնաբանելով այն.
-E, --extended-regexp PATTERN - ընդլայնված կանոնավոր արտահայտություն (ERE)
-F, --fixed-regexp PATTERN - ֆիքսված երկարությամբ տողերն առանձնացված են
նոր տող նիշ
-G, --basic-regexp PATTERN - պարզ կանոնավոր արտահայտություն (BRE)
-P, --perl-regexp PATTERN - Perl կանոնավոր արտահայտություններ
-e, --regexp=PATTERN օգտագործեք PATTERN որոնման համար
-f, --file=FILE վերցնել PATTERN-ը FILE-ից
-i, --ignore-case ignore case տարբերությունը
-w, --word-regexp PATTERN-ը պետք է համապատասխանի բոլոր բառերին
-x, --line-regexp PATTERN-ը պետք է համապատասխանի ամբողջ տողին
-z, --null-տվյալների տողերն առանձնացված են զրոյական բայթով, ոչ
գծի տերմինատոր

Լրացուցիչ.
-s, --no-messages-ը ճնշում է սխալի հաղորդագրությունները
-v, --rever-match ընտրել չհամընկնող տողեր
-V, --տարբերակի ցուցադրման տարբերակի տեղեկատվությունը և ելքը
- օգնել ցույց տալ օգնությունը և դուրս գալ
--mmap հնարավորության դեպքում օգտագործեք հիշողության քարտեզագրում (mmap):

Արդյունքների կառավարում.
-m, --max-count=NUM կանգառ՝ նշված NUM համընկնումից հետո
-b, --byte-offset print offset in
բայթեր
-n, --line-number տպել տողի համարը ելքային տողերի հետ միասին
--line-buffered flush buffer յուրաքանչյուր տողից հետո
-H, --with-filename տպել ֆայլի անունը յուրաքանչյուր համընկնման համար
-h, --no-filename-ը չեն սկսում ելքը ֆայլի անունից
--label=LABEL թողարկում LABEL որպես ֆայլի անուն
ստանդարտ մուտքագրում
-o, --only-matching ցույց տալ տողի միայն այն մասը, որը համապատասխանում է PATTERN-ին
-q, --հանգիստ, --լուռ ճնշել բոլոր նորմալ ելքերը
--binary-files=TYPE դիտարկել երկուական ֆայլի TYPE:
երկուական, տեքստային կամ առանց համընկնման:
-a, --տեքստը նույնն է, ինչ --binary-files=text
-Ես նույնն եմ, ինչ --binary-files=առանց համընկնում
-d, --directories=ACTION ինչպես վարվել դիրեկտորիաների հետ
ԱԿՑԻԱ կարելի է կարդալ (կարդալ),
կրկնել (ռեկուրսիվ) կամ բաց թողնել (բաց թողնել):
-D, --devices=ACTION ինչպես վարվել սարքերի, FIFO-ների և վարդակների հետ
ACTION-ը կարելի է «կարդալ» կամ «բաց թողնել»
-R, -r, --recursive նույնն է, ինչ --directories=recurse
--include=F_PATTERN մշակում է միայն F_PATTERN-ին համապատասխանող ֆայլերը
--exclude=F_PATTERN բաց թողնել ֆայլերը և գրացուցակները,
համապատասխանող F_TEMPLATE
--exclude-from=Ֆայլը բաց թողնում ֆայլերը, որոնք համապատասխանում են օրինակին
ֆայլեր FILE-ից
--exclude-dir=PATTERN դիրեկտորիաներ, որոնք համապատասխանում են PATTERN-ին,
կբացակայվի
-L, --ֆայլեր-առանց համընկնման տպել միայն ՖԱՅԼԻ անունները առանց համընկնումների
-l, --files-with-matches տպում են միայն ֆայլերի անունները համընկնումներով
-c, --հաշվել տպել միայն համընկնումների քանակը
տողեր մեկ Ֆայլի համար
-T, --initial-tab-tab-adign (անհրաժեշտության դեպքում)
-Z, -null տպել բայթ 0 ֆայլի անունից հետո

Համատեքստի կառավարում.
-B, --before-context=NUM տպել նախորդ համատեքստի NUM տողերը
-A, --after-context=NUM տպել NUM տող հետագա համատեքստում
-C, --context[=NUM] տպել NUM համատեքստային տող,
--գույն[=ԵՐԲ],
--colour[=WHEN] օգտագործել մարկերներ՝ համընկնումները տարբերելու համար
գծեր; ԵՐԲ կարող է լինել միշտ (միշտ),
երբեք (երբեք), կամ ավտոմատ (ավտոմատ)
--color, --colour օգտագործել մարկերներ` տարբերելու համապատասխան գծերը
-U, --երկուական, մի հանեք CR նիշերը տողի վերջում (MSDOS)
-u, --unix-byte-offsets ելքային օֆսեթ այնպես, կարծես CR-ներ չկան (MSDOS)

Grep -E-ն պետք է գործարկվի egrep-ի փոխարեն: fgrep-ի փոխարեն ենթադրվում է grep -F:
Որպես egrep կամ fgrep վազելը ավելի լավ է խուսափել:
Երբ FILE-ը չի տրվում, կամ երբ FILE-ը - է, ապա ստանդարտ մուտքագրումը կարդացվում է:
Եթե ​​նշված է երկու ֆայլից պակաս, ապա ենթադրվում է -h: Երբ հայտնաբերվել է
համընկնում է, ծրագրի ելքի կոդը կլինի 0, իսկ եթե ոչ՝ 1:
սխալներ, կամ եթե -q տարբերակը նշված չէ, ելքի կոդը 2 է:

Find հրամանը Linux/FreeBSD-ում: գտնել հրամանի շարահյուսությունը:

Գտեք հրամանի շարահյուսությունը.

# գտնել [ուղին] [տարբերակներ] [որոնման ընտրանքներ] [ֆայլի գործողություններ]

Ճանապարհ- որտեղ փնտրել ֆայլեր, կարող եք օգտագործել բացատով առանձնացված ուղիների ցանկը:

Ընտրանքներ- սկսած «-» նիշից, որին հաջորդում է տարբերակի անվանումը.
Որոնում ենթագրքերում նախքան ինքնին գրացուցակը որոնելը
Որոնելիս հետևեք խորհրդանշական հղումներին
- առավելագույն խորություն ՆՈրոնելիս ստուգեք ոչ ավելի, քան N ներդիր գրացուցակի մակարդակները
-մտածողություն ՆՄի սկանավորեք N կամ ավելի ցածր մակարդակի տեղադրված գրացուցակները
- լեռՄի փնտրեք այլ ֆայլային համակարգերի գրացուցակներ

Որոնման ընտրանքներ

-atimeNՖայլը վերջին անգամ մուտք է գործել N օր առաջ
-mtimeNՖայլը վերջին անգամ փոփոխվել է N օր առաջ
-ԱնունԿաղապար Ֆայլի անուն (անունի ձևանմուշ) առանց ուղու: Կաղապարը խորհուրդ է տրվում միշտ փակցնել չակերտների մեջ
-չափ [±]NՖայլի չափը N բլոկ է, եթե նշված է +N, ապա ֆայլի չափը մեծ է N-ից, -N-ն ավելի քիչ է: N-ից հետո նիշը ցույց է տալիս բլոկի չափը: b - 512 բայթ, c - բայթ, w - 2 բայթ, k - կիլոբայթ, M - մեգաբայթ, G - գիգաբայթ:
-type N N տիպի ֆայլ: N-ի համար առավել հաճախ օգտագործվող արժեքներն են՝ d գրացուցակի համար, f ֆայլի համար:
- օգտագործողՕգտվողի անուն Ֆայլը պատկանում է օգտանուն անունով օգտվողին:

Գտնել հրամանի օգտագործման օրինակներ՝ օգտագործելով պարամետրերը.

#գտնել. -type f -name "~*" -print

Գտեք ընթացիկ գրացուցակում սովորական ֆայլեր (ոչ տեղեկատուներ), որոնց անունները սկսվում են «~» գրանշանով:

#գտնել. -ավելի նոր file.bak -type f -print

Գտեք ֆայլեր ընթացիկ գրացուցակում, որոնք փոփոխվել են ավելի ուշ, քան file.bak ֆայլը:

Օպերատորներ
Չափանիշները կարող են համակցվել օպերատորների միջոցով: Հետևյալ օպերատորներն են իրենց գերակայության նվազման կարգով:

Կարճ ձև Երկար ձևի նկարագրություն
Չափանիշ - ոչ բացասական (վերադարձնում է ճշմարիտ, եթե չափանիշը կեղծ է)
չափանիշ1 -ա չափանիշ2 -և AND օպերատոր (ճիշտ է, եթե չափանիշ 1 և չափանիշ 2 ճշմարիտ են)
չափանիշ1-o չափանիշ2 -կամ OR օպերատոր (ճիշտ է, եթե չափանիշ 1 կամ չափանիշ 2 ճշմարիտ է)

AT ընդհանուր դեպքՕպերատորներից օգտվելիս չափանիշները ստուգվում են ըստ իրենց առաջնահերթության: Դուք կարող եք փոխել կարգը փակագծերի միջոցով: Փակագծերը պետք է առանձնացվեն ետ կտրվածքով:

Գտեք հրամանների օրինակներ՝ օգտագործելով օպերատորներ

#գտնել. \(-name "%*" -or -name "temp*" \) -type f -print

Գտեք ֆայլեր ընթացիկ գրացուցակում, որոնք սկսվում են «%» կամ c «temp» գրանշանով և ֆայլեր են ( - տեսակ f), ոչ տեղեկատուներ:

#գտնել. -maxdepth 1 \(\(-size +600M -and -size -1G \) -or -name "*.mpeg" \) -and -type f

Գտեք ընթացիկ գրացուցակում (առանց ենթատեղեկատուների մշակման - - առավելագույնը 1) սովորական ֆայլեր ( - ֆայլ f) 600 ՄԲ-ից մեծ և 1 ԳԲ-ից պակաս (-size) կամ ֆայլեր, որոնց անունը վերջանում է «.mpeg» (-name):

Գործողություններ ֆայլերի վրա
Երբ Find հրամանը կատարվում է, գտնված ֆայլերի վրա կարող եք կատարել տարբեր գործողություններ: Դիտարկենք հիմնականները.

Exec հրաման \; - Կատարել հրաման: Նկատի ունեցեք, որ հրամանին հաջորդում է հետնագիծը և ստորակետը:
-execdir հրաման \; - Նույնը, ինչ exec-ը, բայց հրամանը կանչվում է ընթացիկ ֆայլը պարունակող ենթացանցից:
-ok հրաման \; - Նույնը, ինչ exec-ը, բայց նախքան հաջորդ ֆայլը մշակելը, ձեզ կառաջարկվի կատարել հրամանը:
-okdir հրաման \; -Նույնը, ինչ լավ է execdir-ի համար:
-print - Ցուցադրել ֆայլի անունը էկրանին:
-ls - Գործարկեք ls -dils հրամանը ընթացիկ ֆայլի վրա:

Ձեր գործած հրամաններում կարող եք օգտագործել պարամետր ()որպես փաստարկ, որը փոխարինվում է ընթացիկ ֆայլի ուղով:

Գտեք հրամանների օրինակներ՝ օգտագործելով գործողությունները

#գտնել. -չափ +1000c -տիպ f -ls

Ընթացիկ գրացուցակում գտեք 1000 բայթից ավելի սովորական ֆայլեր և դրանց վրա կատարեք ls -dils հրամանը (ls action):

#գտնել. -անուն «~*» -տիպ f -ok rm () \;

Ընթացիկ գրացուցակում գտեք սովորական ֆայլեր, որոնք սկսվում են «~» տիլդի նիշով և յուրաքանչյուր ֆայլի համար խնդրում ենք այն ջնջել (rm հրամանը կատարելու համար):

ՕՐԻՆՆԵՐ.

Գտեք ֆայլերը ըստ իրենց չափի

# գտնել /var/log -name "*.log" -և \(-size +1k -and -size -1000k \) -and -type f -print

Կգտնվեն և կցուցադրվեն *.log ընդլայնմամբ ֆայլեր՝ 1կբ-ից մինչև 1000կբ չափսերով:

Որոնեք ֆայլեր ըստ իրենց սեփականատիրոջ և խմբի

Այս հրամանը կգտնի բոլոր ֆայլերը, որոնք սեփականատեր չունեն

Ընտրանքներ - օգտագործողկամ -ուիդթույլ է տալիս որոնել ֆայլեր ըստ օգտվողի ID-ի (UID) և օգտվողի անունով և պարամետրով - խումբխմբի անունով:

#գտնել. -name "*.log" -user root -group root

Գտնում է բոլոր ֆայլերը ընթացիկ գրացուցակում օգտատիրոջ արմատի և խմբի արմատի ընդլայնման մատյանով

# գտնել -user root -o -user www

Գտնում է օգտագործողի արմատի կամ www-ի բոլոր ֆայլերը

Օգտագործելով կանոնավոր արտահայտություններ

Կոմունալ գտնելաջակցում է կանոնավոր արտահայտություններ. Անմիջապես օրինակ բերենք. Ենթադրենք, ես ուզում եմ գտնել բոլոր ֆայլերը, որոնց ընդլայնումները .php կամ .js են: Ես կարող էի դա անել այսպես.

# find -regexttype posix-egrep -regex ".*(php|js)$"

Մի փոքր բարդ է թվում, այնպես չէ՞: Որպես հերքում՝ նշում ենք, որ այստեղ օգտագործվող շարահյուսությունն է egrep (-regexttype posix-egrep), և այնուհետև նշում է որոնման համար օգտագործվող կանոնավոր արտահայտությունը: Արտահայտությունը սկսվում և ավարտվում է միայնակ չակերտներով, որպեսզի ինքնին կեղևը չփորձի վերլուծել կանոնավոր արտահայտությունը: Այնուհետև գալիս է արտահայտությունը.*, որն օգտագործում է ցանկացած նիշի կամ նիշերի շարքին համապատասխանող ցուցանիշ: (php|js) մասը ձեզ ասում է որոնել php կամ js: Այս արտահայտության խողովակաշարը (|) համընկնում է բուլյան արտահայտություն"կամ". Ի վերջո, դոլարի նշանը ($), որն ավարտում է արտահայտությունը, ցույց է տալիս, որ մենք փնտրում ենք այս ընդլայնումները ֆայլի անվան վերջում: Այսպիսով, եթե դուք ունեք js.txt անունով ֆայլ, այն չի համապատասխանի որոնման չափանիշներին:

Աշխատել ժամանակի հետ
Find utility-ն ունի այն ամենը, ինչ ձեզ անհրաժեշտ է որոնել ըստ ֆայլի օգտագործման ժամանակի: Դուք կարող եք որոնել ըստ մուտքի ժամանակի ( -մի ժամանակ), կամ մինչև ֆայլը վերջին անգամ փոփոխվել է (-mtime), կամ մինչև այն վերջին անգամ փոփոխվել է ( -ժամանակ).

Օրինակ, եկեք գտնենք բոլոր ֆայլերը, որոնք չեն փոփոխվել վերջին երկու օրվա ընթացքում.

# գտնել -mtime +2

Եթե ​​ցանկանում եք որոնել ֆայլեր որոշակի տիրույթում, կարող եք համատեղել տարբերակները: Այսպիսով, գտնել -mtime +2 -mtime -5 կնշանակի «երկու կամ ավելի օր առաջ, բայց ոչ ավելի, քան հինգ օր առաջ»:

Աշխատեք րոպեներով
Երբեմն դուք պետք է փնտրեք վերջին օրվա ընթացքում փոփոխված ֆայլեր, և որոնման նախորդ տարբերակները դրա համար այնքան էլ ճշգրիտ չեն: Find utility-ը լավ է, քանի որ ունի նաև պարամետրեր -ամին, -սմև - մմ, որոնք նման են նախկինում քննարկված տարբերակներին, սակայն օրերի փոխարեն օգտագործում են րոպեներ։ Այսպիսով, եթե ցանկանում եք տեսնել, թե որ ֆայլերն են փոփոխվել կամ մուտք գործել վերջին օրը, կարող եք օգտագործել այս ընտրանքները:

Որոնման սահմանափակումներ
Երբեմն find utility-ն ավելի շատ արդյունքներ կտա, քան ձեզ անհրաժեշտ է: Դուք կարող եք սահմանափակել Find utility-ի կողմից վերադարձված որոնման արդյունքները՝ նշելով պարամետրը առավելագույն խորություն. Օրինակ, եթե ցանկանում եք գտնել բոլորը JavaScript ֆայլեր WordPress գրացուցակում կարող եք օգտագործել հետևյալ հրամանը.

# գտնել wordpress -name «*js»

Բայց ինչ, եթե ցանկանում եք տեսնել միայն այն JavaScript ֆայլերը, որոնք գտնվում են գրացուցակում բարձր մակարդակ? Դուք կարող եք սահմանափակել ձեր որոնումը պարամետրով - առավելագույն խորություն:

# գտնել wordpress -maxdepth 1 -name "*js"

Որոնումը կկատարվի միայն WordPress գրացուցակում, ոչ թե ենթագրքերում: Եթե ​​փոխեք արժեքը - առավելագույն խորություն 2-ով, այն կփնտրի WordPress գրացուցակի ենթագրքեր, բայց ոչ ավելի խորը ենթագրքեր:

Համակցելով Find utility-ը այլ հրամանների հետ
Այժմ, երբ գտել եք ձեր փնտրած ֆայլերը, ի՞նչ եք պատրաստվում անել դրանց հետ: Դուք կարող եք օգտագործել պարամետրերը find utility-ում xargsկամ -գործ, որը թույլ է տալիս նշել այն գործողությունները, որոնք պետք է կատարվեն ֆայլերի վրա՝ դրանք գտնելուց հետո:

Ենթադրենք, դուք ցանկանում եք փոխել ֆայլի սեփականատիրոջը արմատից դեպի www-data միանգամից մեծ թվով ֆայլերի համար: Այս բոլոր ֆայլերը գտնելը միայն առաջին քայլն է, դուք նաև պետք է փոխեք ֆայլի սեփականատիրոջը: Դա արեք ձեռքով, ըստ կոմունալ ծառայության կողմից վերադարձված ցանկի գտնել, շատ հոգնեցուցիչ։ Հետևաբար, ֆայլերի սեփականությունը փոխելու համար կարող եք օգտագործել -գործ:

# find -user root -exec chown www-data () \;

Շատ կարևոր է ժամանակին և շատ արագ գտնել կարողանալը անհրաժեշտ տեղեկատվությունհամակարգում։ Իհարկե, բոլորը ժամանակակից ֆայլերի կառավարիչներառաջարկում է հիանալի որոնման գործառույթ, բայց այն չի համեմատվում Linux տերմինալների որոնման հետ: Այն շատ ավելի արդյունավետ և ճկուն է, քան սովորական որոնումը, դուք կարող եք որոնել ֆայլերը ոչ միայն անունով, այլ նաև ըստ ավելացման ամսաթվի, բովանդակության, ինչպես նաև օգտագործել կանոնավոր արտահայտություններ որոնելու համար: Բացի այդ, գտնված ֆայլերով կարող եք անմիջապես կատարել անհրաժեշտ գործողությունները։

Այս հոդվածում մենք կխոսենք շատ հզոր find Linux հրամանով որոնելու մասին՝ մանրամասնելով դրա շարահյուսությունը, տարբերակները և մի քանի օրինակներ:

Find-ը ամենակարևոր և ամենատարածված կոմունալ ծառայություններից մեկն է: Linux համակարգեր. Սա հատուկ պայմանների հիման վրա ֆայլեր և գրացուցակներ որոնելու հրաման է: Այն կարող է օգտագործվել տարբեր հանգամանքներում, օրինակ՝ որոնել ֆայլեր ըստ թույլտվությունների, սեփականատերերի, խմբերի, տեսակի, չափի և այլ նմանատիպ չափանիշների:

Find utility-ը լռելյայն նախապես տեղադրված է բոլորում Linux բաշխումներայնպես որ ձեզ հարկավոր չէ լրացուցիչ փաթեթներ տեղադրել: Սա շատ կարևոր գտածո է նրանց համար, ովքեր ցանկանում են օգտագործել հրամանի տողամենաարդյունավետը:

Find հրամանն ունի հետևյալ շարահյուսությունը.

գտնել [թղթապանակ] [ընտրանքներ] չափանիշները օրինակ [գործողություն]

Թղթապանակ- գրացուցակը, որտեղ մենք կփնտրենք

Ընտրանքներ - Լրացուցիչ ընտրանքներ, օրինակ, որոնման խորությունը և այլն:

Չափանիշ- ինչ չափանիշով ենք որոնելու՝ անուն, ստեղծման տարեթիվ, իրավունքներ, սեփականատեր և այլն:

Նմուշ- ուղղակիորեն այն արժեքը, որով մենք կընտրենք ֆայլերը:

Find հրամանի հիմնական պարամետրերը

Այստեղ ես չեմ թվարկի բոլոր տարբերակները, մենք կդիտարկենք միայն ամենաօգտակարները:

  • երբեք մի բացեք խորհրդանշական հղումներ
  • - Խորհրդանշական հղումների միջոցով տեղեկություններ է ստանում ֆայլերի մասին: Հետագա մշակման համար կարևոր է, որ մշակվի ոչ թե հղումը, այլ հենց ֆայլը։
  • - առավելագույն խորություն- ենթագրքերում որոնման առավելագույն խորությունը, միայն ընթացիկ գրացուցակում որոնելու համար, սահմանեք 1:
  • -խորություն- որոնել նախ ընթացիկ գրացուցակում, այնուհետև ենթագրքերում
  • - լեռփնտրեք ֆայլեր միայն այս ֆայլային համակարգում:
  • -տարբերակ- ցույց տալ գտնել օգտակար տարբերակը
  • - տպել- ցուցադրել ամբողջական ֆայլերի անունները
  • - տեսակ f- որոնել միայն ֆայլեր
  • - տեսակ դ- գտնել թղթապանակ Linux-ում

Չափանիշներ

Linux-ում find հրամանի չափորոշիչները շատ են, և նորից մենք կդիտարկենք միայն հիմնականները:

  • -Անուն- որոնել ֆայլերը անունով
  • - Պերմ- որոնել ֆայլեր Linux-ում մուտքի ռեժիմով
  • - օգտագործող- որոնել ֆայլերը սեփականատիրոջ կողմից
  • - խումբ- խմբային որոնում
  • -mtime- որոնում ըստ ֆայլի փոփոխման ժամանակի
  • -մի ժամանակ- որոնել ֆայլերը ըստ վերջին ընթերցման ամսաթվի
  • - ոչ խումբ- որոնել ֆայլեր, որոնք չեն պատկանում որևէ խմբի
  • - նուզեր- որոնել ֆայլեր առանց սեփականատերերի
  • - ավելի նոր- գտնել նշվածից ավելի նոր ֆայլեր
  • - չափը- որոնել ֆայլերը Linux-ում ըստ իրենց չափի

Օգտագործման օրինակներ

Այժմ եկեք նայենք գտնելու օրինակներին, որպեսզի ավելի լավ հասկանաք, թե ինչպես օգտագործել այս օգտակար ծրագիրը:

1. Որոնել բոլոր ֆայլերը

Ցուցադրել բոլոր ֆայլերը ընթացիկ գրացուցակում.

2. Որոնեք ֆայլեր կոնկրետ թղթապանակում

Ցույց տալ բոլոր ֆայլերը նշված գրացուցակում.

Փնտրեք ֆայլեր ըստ անվանման ընթացիկ թղթապանակում.

գտնել. - անունը «*.jpg»

Անտեսել գործը անունով որոնելիս.

գտնել. -անուն «թեստ*»

3. Որոնման խորության սահմանափակում

Որոնեք ֆայլերը ըստ անունով Linux-ում միայն այս թղթապանակում.

գտնել. -maxdepth 1 -name "*.php"

4. Կաղապարի ինվերսիա

Գտեք ֆայլեր, որոնք չեն համապատասխանում օրինաչափությանը.

գտնել. -ոչ -անուն «թեստ*»

5. Բազմաթիվ չափանիշներ

Բազմաչափերի որոնում Find հրամանով Linux-ում, բացառման օպերատորով.

գտնել. -name "test" -ոչ -name "*.php"

Գտնում է բոլոր ֆայլերը, որոնք սկսվում են թեստով, բայց առանց php ընդարձակումներ. Այժմ հաշվի առեք OR օպերատորը.

գտնել -name "*.html" -o -name "*.php"

6. Բազմաթիվ դիրեկտորիաներ

Որոնեք միաժամանակ երկու գրացուցակներում.

գտնել ./test ./test2 -type f -name "*.c"

7. Փնտրեք թաքնված ֆայլեր

Գտեք թաքնված ֆայլերը.

find ~ -type f -name ".*"

8. Որոնել ըստ թույլտվությունների

Գտեք հատուկ թույլտվության դիմակով ֆայլեր, օրինակ՝ 0664:

գտնել. տեսակ f-perm 0664

Գտեք ֆայլեր suid/guid դրոշի հավաքածուով.

գտնել / -պերմ 2644

գտնել / -maxdepth 2 -perm /u=s

Գտեք միայն կարդալու ֆայլեր.

գտնել /etc -maxdepth 1 -perm /u=r

Գտեք միայն գործարկվող ֆայլեր.

գտնել /bin -maxdepth 2 -perm /a=x

9. Ֆայլերի որոնում ըստ խմբերի և օգտվողների

Գտեք օգտվողին պատկանող բոլոր ֆայլերը.

գտնել. - օգտատեր սերգի

Գտեք Linux-ում խմբին պատկանող ֆայլեր.

գտնել /var/www -group developer

10. Որոնում ըստ փոփոխման ամսաթվի

Linux-ում ըստ ամսաթվի ֆայլերի որոնումն իրականացվում է mtime պարամետրի միջոցով: Գտեք 50 օր առաջ փոփոխված բոլոր ֆայլերը՝

գտնել / -mtime 50

Գտեք ֆայլեր Linux բաց N օր առաջ:

գտնել / -atime 50

Գտեք 50-ից 100 օր առաջ փոփոխված բոլոր ֆայլերը.

գտնել / -mtime +50 –mtime -100

Գտեք մեկ ժամվա ընթացքում փոփոխված ֆայլերը.

11. Փնտրեք ֆայլերը ըստ չափի

Գտեք բոլոր ֆայլերը 50 մեգաբայթ չափով.

գտնել / -չափ 50M

Հիսունից մինչև հարյուր մեգաբայթ.

գտնել / -չափ +50M -չափ -100Մ

Գտեք ամենափոքր ֆայլերը.

գտնել. -տիպ f -exec ls -s () \; | տեսակավորել -ն -ր | գլուխ-5

Ամենամեծ:

գտնել. -տիպ f -exec ls -s () \; | տեսակավորում-n | գլուխ-5

12. Փնտրեք դատարկ ֆայլեր և թղթապանակներ

գտնել /tmp -տիպ f -դատարկ

$ գտնել ~/ -տիպ d -դատարկ

13. Գործողություններ գտնված ֆայլերով

-exec տարբերակը օգտագործվում է հայտնաբերված ֆայլերի վրա կամայական հրամաններ կատարելու համար: Օրինակ՝ գործարկեք ls-ը՝ յուրաքանչյուր ֆայլի մասին մանրամասն տեղեկություններ ստանալու համար.

գտնել. -exec ls -ld() \;

ջնջել ամեն ինչ տեքստային ֆայլերդեպի tmp

գտնել /tmp -type f -name "*.txt" -exec rm -f () \;

Ջնջել 100 մեգաբայթից մեծ բոլոր ֆայլերը.

գտնել /home/bob/dir -type f -name *.log -size +10M -exec rm -f () \;

եզրակացություններ

Այսպիսով, այս կարճ հոդվածը ավարտվեց, որտեղ դիտարկվում էր գտնել հրամանը: Ինչպես տեսնում եք, սա Linux-ի ամենակարևոր տերմինալի հրամաններից մեկն է և շատ հեշտ է դարձնում ձեզ անհրաժեշտ ֆայլերի ցանկը: Ցանկալի է, որ բոլորն իմանան համակարգի ադմինիստրատորներ. Եթե ​​Ձեզ անհրաժեշտ է որոնել հենց ֆայլերի բովանդակությամբ, ապա ավելի լավ է օգտագործել .

Միգուցե դուք գիտեք այնպիսի խնդիր, ինչպիսին է. Դուք չեք կարող գտնել ֆայլը, բայց այն ինչ-որ տեղ համակարգչի վրա է: Այնուհետեւ գտնել հրամանը հարմար է:

Դուք հարցնում եք. Ինչպե՞ս օգտագործել այն: Այս ծրագրի համար հսկայական մարդ էջ կա, մենք կանդրադառնանք որոշ սովորական դեպքերի:

Դուք կարող եք սկսել ամենապարզից. Եթե գիտեք ֆայլի անունը, ապա հեշտությամբ կարող եք գտնել այն: Այն ամենը, ինչ դուք պետք է անեք, մուտքագրեք find և նշեք հատուկ ֆայլի անուն:

Linux որոնել ֆայլերը անունով

Ահա մեկը պարզ հրաման:

Գտեք-անուն սեր
Եթե ​​կա «love» անունով ֆայլ, ապա find հրամանը կգտնի ֆայլի կամ նման մի քանի ֆայլերի գտնվելու վայրը.

[էլփոստը պաշտպանված է]:~$ գտնել -անուն սեր ./projects/love [էլփոստը պաշտպանված է]:~$
Օրինակ, մենք կփնտրենք բոլոր ֆայլերը mp3 ձևաչափով և կանենք ամբողջական ցանկըֆայլում:

Ֆայլ /home/artix -inname «.mp3» > ./list.txt

Ֆայլերի որոնում ըստ անվանման մասի

Հաջորդը, մենք կգտնենք txtx ձևաչափով ֆայլեր, ոչ միայն ֆայլեր, այլ այնպիսի տեքստային ֆայլեր, որոնք պարունակում են «LEON» բառը.

Ֆայլ /home/artix -inname ".txt" -exec grep -H "LEON" "()" \; > ./list.txt
Հիանալի է, մենք արդեն ունենք պարզվում է որոնել Linux ֆայլերը բառով«ԼԵՈՆ». Նույն կերպ կարող եք հեռացնել ավելցուկը, իսկ ֆոնին, որպեսզի կարողանաք շարունակել աշխատել.

Ֆայլ /home/artix -inname ".bak" -exec rm "()" \; &
Ահա թե ինչպես ենք մենք հեշտացնում մեր կյանքը։ Սրանք ամենապարզ բաներն են, և դրանցում շատ օգտակար բաներ կան։

Գտեք ֆայլեր ըստ Linux ամսաթվի

Գտեք ./ -mmin -10 #Փոփոխության ամսաթիվը 10 րոպեից պակաս է Գտեք ./ -mtime +1 #Փոփոխության ամսաթիվը մեկ օրից ավելի է գտնում ./ -type f -atime +10 # Մուտքի ժամանակը 10 օրից ավելի է գտնել: / -տիպ f -amin - 10 #փոփոխման ամսաթիվը տևում է 10 րոպե

Գտեք տեքստ Linux ֆայլերում

Հաճախ է պատահում, որ ցանկանում եք տեքստ որոնել Linux ֆայլեր. Ես կտամ ֆայլերի որոնման 2 օրինակ՝ (linux, freebsd) ֆայլերում անհրաժեշտ է տեքստի հատված.

# գտնել /var/named/ -type f -exec grep "MX" () \; serversnetwork.info. 14400 IN MX 10 փոստ
և ևս մեկը.

# grep -rl «MX» /var/named/ /var/named/serversnetwork.info.db

Գտեք ֆայլեր ըստ չափի
Երբեմն, այլ հրամաններ կարող են օգտագործվել Linux ֆայլեր որոնելու համար: Օրինակ, դուք նկատեցիք, թե ինչպես ձեր համակարգչի վրա, ինչ-որ բաժնում, այն սկսեց մեծանալ ծավալով: Պարզելու համար, թե որ ֆայլի հետ է այն կապված, կամ որ թղթապանակն է լցված, կարող եք օգտագործել հետևյալ հրամանը.

Գտեք - չափը 95k.
Այսպես մենք կգտնենք 95 հազար ֆայլ։ Բայց այս տարբերակը հազվադեպ է օգտագործվում: Ավելի շատ օգտագործեք հրամաններ, որոնք կարող են օգտագործվել նշված չափից մեծ կամ փոքր ֆայլ գտնելու համար: Օրինակ, տարբերակը.

Գտեք -չափ +150k
Պետք է ցույց տա 150 հազարից ավելի ֆայլեր: Տարբերակ

Գտեք -չափ -94k
ինչ-որ բան պակաս, քան 94K:

-size ֆունկցիան որոնում է նշված չափի ֆայլեր և գործարկվելիս այսպիսի տեսք ունի.

$ գտնել. -չափը 3500կ -տպ
Այս տարբերակը կփնտրի Linux ֆայլերը և կցուցադրի էկրանիննրանք, ովքեր ունեն 3500 կիլոբայթ չափս, որոնք գտնվում են այս թղթապանակում: Եթե ​​Ձեզ անհրաժեշտ է գտնել ֆայլեր, որոնց չափը 250 կիլոբայթից պակաս է, ապա հրամանը կունենա հետևյալ տեսքը.

$ գտնել. -չափը -200k -տպ
Եթե ​​պահանջվում է գտնել ֆայլեր, որոնց չափը ավելի քան 555 մեգաբայթ է, ապա մենք կօգտագործենք տարբերակը.

$ գտնել / -չափ +555M -տպել
Թերևս դրա մասին ես կավարտեմ հոդվածս գրելը։

Այժմ դուք հավանաբար կարող եք ինքներդ որոնել ֆայլեր, որոնել տեքստ Linux ֆայլերում, որոնել ֆայլեր ըստ ամսաթվի:

Շնորհակալություն բոլորիդ մինչ այժմ:

Անկասկած, Linux-ի հետ աշխատելիս երբեմն դա անհրաժեշտություն է դառնում ֆայլի որոնումորոշակի հատկանիշներով։ Այս բնութագրերը կարող են լինել ֆայլի չափը կամ տեսակը, թույլտվությունները և այլն:


Հասանելիություն մեջ Linux հրամաններ գտնելշատ է օգնում հաղթահարել ֆայլի որոնումըստ տարբեր չափանիշների:


Այսօր մենք կվերլուծենք որոնել ֆայլեր Linux-ումև տվեք գլխավոր հրամանի տարբերակները գտնելոր կարող եք կիրառել ձեր աշխատանքում:

Հրամանի ձևաչափ գտնել:

գտնելուղին- ընտրանքներ

որտեղ ուղինորոնման գրացուցակն է: Դուք կարող եք նշել հետևյալ արժեքները ուղու համար.

. - որոնել ընթացիկ գրացուցակում;

/ - որոնել արմատային գրացուցակից;

~ - որոնել գլխավոր գրացուցակում:

Ինչ վերաբերում է տարբերակներին, ապա այստեղ կա շատ ավելի մեծ ցուցակ, որը չափազանց անհրաժեշտ է ուշադիր կարդալ (սա շատ կօգնի ապագայում): Այսպիսով, Find հրամանի հիմնական տարբերակները:

-Անուն- որոնել ֆայլերը անունով՝ օգտագործելով տվյալ ձևանմուշը;

- օգտագործող- որոնել նշված օգտվողին պատկանող ֆայլեր.

- խումբ- որոնել նշված խմբին պատկանող ֆայլեր.

- Պերմ- որոնել ֆայլեր նշված մուտքի ռեժիմով.

-տիպ- որոնել որոշակի տեսակի ֆայլեր: Տեսակները նույնպես բավարար են.

  • բ - հատուկ բլոկային ֆայլ;
  • դ - գրացուցակ;
  • c-ը հատուկ նիշերի ֆայլ է;
  • f - սովորական ֆայլ;
  • լ - խորհրդանշական հղում;
  • p - անունով խողովակ;
  • s - վարդակից:
- չափը- որոնել n միավոր չափի ֆայլեր;

-mtime -n +n- որոնել ֆայլեր, որոնց բովանդակությունը փոխվել է ավելի քիչ, քան (-) կամ ավելի քան (+) օր առաջ:

Հաշվի առեք մի քանիսը հրամանների օգտագործման օրինակներ գտնել :

Ամենատարածված օգտագործվող տարբերակը տարբերակն է -Անուն, որը որոնում է ֆայլերը անունով:

Օրինակներ -name տարբերակով :

$ գտնել /mnt/usb -name "*.mp3" -print

կփնտրի բոլոր ֆայլերը (նշված է * նշանով), որոնք ունեն .mp3 ընդլայնում USB սարքի վրա, որը տեղադրված է /mnt/usb գրացուցակում:

$ find ~ -name «թեստ*» -տպել

կցուցադրի ֆայլերի ցանկը տնային գրացուցակում, որը սկսվում է թեստից:

Եթե ​​Ձեզ անհրաժեշտ է գտնել որոշակի տառերով սկսվող ֆայլեր (օրինակ՝ a-ից մինչև j), ապա այստեղ հարմար կլինի օգտագործել կանոնավոր արտահայտություններ, որոնց հետ աշխատելը չափազանց հարմար է.

$ գտնել / -անունը «*» -տպել

Վերոնշյալ հրամանը կգտնի համակարգի բոլոր ֆայլերը՝ սկսած a-ից մինչև j տառերով:

Հատուկ մուտքի ռեժիմներով ֆայլեր գտնելը

Եթե ​​Ձեզ անհրաժեշտ է գտնել ֆայլեր, որոնք ունեն որոշակի մուտքի ռեժիմներ, կարող եք օգտագործել տարբերակը - Պերմորը կօգնի ձեզ հեշտությամբ.

Օրինակ, եկեք որոնենք 775 մուտքի ռեժիմով ֆայլեր (սեփականատերը և խումբն ունեն լիարժեք իրավունքներև այլ օգտվողներ ունեն գրելու սահմանափակում), որը գտնվում է ընթացիկ գրացուցակում.

$ գտնել. -պերմ 775 -տպ

Փնտրում է գտնել-perm տարբերակով կարող եք օգտագործել մեկ այլ եղանակ՝ ռեժիմի արժեքի դիմաց կարող եք գծիկ դնել, այնուհետև որոնել այն ֆայլերը, որոնց համար սահմանված են բոլոր նշված թույլտվության բիթերը: Ավելին, մնացած բիթերն այս դեպքում անտեսվում են։

Օրինակ՝ եկեք գտնենք ֆայլեր, որոնց խմբի օգտատերերն ունեն ամբողջական մուտք:

$ գտնել. -պերմ -070 -տպ

Գծի փոխարեն կարող եք նշել գումարած նշան: Այս դեպքում այն ​​կփնտրի ֆայլեր, որոնք ունեն նշված թույլտվության բիթերից առնվազն մեկը: Մնացած բիթերը անտեսվում են:

Որոնեք որոշակի օգտվողի կամ խմբի ֆայլեր

Հատուկ օգտագործողի ֆայլերի որոնումը չափազանց պարզ է դրա իրականացման մեջ: Դա անելու համար պարզապես գործարկեք հրամանը.

$ գտնել / -user admin -print

Վերոնշյալ հրամանը կարտադրի ֆայլի որոնումհամակարգում, որը պատկանում է ադմինիստրատորի օգտագործողին:

Որոշակի խմբին պատկանող ֆայլեր (օրինակ՝ մենեջերներ) գտնելու համար գործարկեք հրամանը.

$ գտնել / -խմբի կառավարիչներ - տպել

Գոյություն չունեցող օգտվողների կամ խմբերի ֆայլեր որոնելու համար կարող եք օգտագործել ընտրանքները - նուզերև - ոչ խումբ:

$ գտնել / -nouser - տպել

$ գտնել / -nogroup -print

Որոնեք որոշակի տեսակի ֆայլեր

Հրամանի հարմար հատկանիշներից մեկը գտնել, որոշակի տեսակի ֆայլեր որոնելու հնարավորություն է։ Մտածեք տարբերակն օգտագործելու տարբերակները -տիպ:

/etc գրացուցակում խորհրդանշական հղումների որոնում.

$ գտնել / etc -type l -print

Ցուցադրվում է /mnt/raid գրացուցակում առկա դիրեկտորիաների ցանկը

$ գտնել /mnt/raid -type d -print

Որոնեք որոշակի չափի ֆայլեր

Տարբերակ - չափըթույլ է տալիս որոնել որոշակի չափի ֆայլեր և կատարման ժամանակ այսպիսի տեսք ունի.

$ գտնել. -չափը 2000k -տպ

Վերոնշյալ հրամանը կգտնի և էկրանին կցուցադրի ընթացիկ գրացուցակում գտնվող 2 մեգաբայթանոց ֆայլերը: Եթե, օրինակ, ձեզ անհրաժեշտ է գտնել 500 կիլոբայթից պակաս ֆայլեր, ապա հրամանը կունենա հետևյալ տեսքը.

$ գտնել. -չափը -500k -տպ

Եթե ​​Ձեզ անհրաժեշտ է գտնել 600 մեգաբայթից ավելի ֆայլեր, ապա օգտագործեք հրամանը.

$ գտնել / -չափ +600M -տպել

Ֆայլերի որոնում՝ օգտագործելով -mtime տարբերակը

Տարբերակ -mtimeթույլ կտա գտնել ֆայլեր, որոնք ժամանակի ընթացքում փոխվել են:

Օրինակ, մենք խնդիր ունեինք փնտրել ֆայլեր, որոնք գտնվում են /mnt/raid/upload գրացուցակում, որոնք փոխվել են վերջին 5 օրվա ընթացքում: Այս հրամանը կօգնի մեզ.

$ գտնել /mnt/raid/upload -mtime -5 -print

Եթե ​​մեզ անհրաժեշտ է հակառակը, օրինակ՝ մեկ շաբաթվա ընթացքում չփոխված ֆայլերը գտնելու համար, մենք օգտագործում ենք հրամանը.

$ գտնել /mnt/raid/upload -7 -print

Թիմ գտնելչափազանց է հարմար գործիքհամար ֆայլի որոնումև կարող է օգտագործվել նաև ֆայլի որոնում NFS կրիչներում (ցանց ֆայլային համակարգեր), բայց այս դեպքում պետք է հաշվի առնել, որ NFS-ում ինչ-որ բան որոնելու համար շատ ավելի շատ ժամանակ կպահանջվի, քան տեղական սկավառակների վրա։

Այս հոդվածում մենք անդրադարձել ենք գտնել հրամանի միայն հիմնական տարբերակներին, որոնք կօգնեն ձեզ ձեր աշխատանքում: Օգտագործեք այն, ինչ հարմար է և մի անհանգստացեք մանրուքների համար: