Выкарыстанне Linux і Unix Каманда: знайсці

Linux і Unix камандная знаходка выконвае пошук файлаў у іерархіі каталогаў.

Сінтаксіс каманды пошуку:

знайсці [шлях ...] [выраз]

апісанне

Гэтая старонка кіраўніцтва дакументы версіі GNU з знаходцы. Каманда знаходкай шукае ў дрэве каталогаў з коранем у кожны дадзены імя файла, ацэньваючы дадзены выраз злева направа, у адпаведнасці з правіламі старшынства (гл раздзел аператараў ніжэй), пакуль вынік вядомы; Іншымі словамі, левы бок ілжывая для і аперацый, адносіцца да або, у які момант знайсці пераходзіць да наступнага імя файла.

Першы аргумент, які пачынаецца з:

бярэцца пачатак выразы; любыя аргументы перад ёй шляхі для пошуку, і любыя аргументы пасля яго астатнія выразы. Калі няма шляху не зададзены, выкарыстоўваецца бягучы каталог. Калі ніякае выраз ня зададзена, выкарыстоўваецца выраз -print.

Каманда знаходкі выходзіць са статусам 0 , калі ўсе файлы апрацоўваюцца паспяхова, больш , чым 0 ў выпадку ўзнікнення памылкі.

выразы

Выраз складаецца з опцый (якія ўплываюць на агульную працу, а не апрацоўкі пэўнага файла, і заўсёды вяртаюць TRUE), тэсты (якія вяртаюць сапраўднае або ілжывае значэнне), а таксама дзеянні (якія маюць пабочныя эфекты і вярнуць сапраўдным або ілжывае значэнне), усе аддзеленыя адзін ад аператараў. Выраз мяркуецца , дзе аператар апускаецца. Калі выраз не ўтрымлівае , акрамя -prune дзеянні, то -print выконваецца для ўсіх файлаў , для якіх выраз праўдзіва.

опцыі

Усе варыянты заўсёды вяртае ісціну. Яны заўсёды ўступаюць у сілу, а не апрацоўваецца толькі тады, калі іх месца ў выразе будзе дасягнута. Такім чынам, для яснасці, то лепш размясціць іх у пачатку выразы.

-daystart Вымераць раз (для -amin, -atime, -cmin, -ctime, -mmin і -mtime) з пачатку сённяшняга дня , а не з 24 гадзін таму.
-depth Працэс ўтрымання кожнага каталога перад самай дырэкторыі.
-follow Разнаймення сімвалічных спасылак. Маецца на ўвазе -noleaf.
-Дапамога або --help Друк рэзюмэ выкарыстання каманднага радка знаходкі і выхаду.
-maxdepth [нумар] Схадзіце на найбольшую колькасць узроўняў (неадмоўнае цэлы лік) каталогаў ніжэй аргументаў каманднага радка. Выраз -maxdepth 0 азначае , прымяняюцца толькі тэсты і дзеянні , аргументы каманднага радка.
-mindepth [нумар] Не ўжываць любыя тэсты або дзеянні на узроўнях менш, чым колькасць (неадмоўнае цэлы лік). Выраз -mindepth 1 азначае апрацоўваць усе файлы , акрамя аргументаў каманднага радка.
-mount Ня спускацца каталогі на іншых файлавых сістэмах. Альтэрнатыўнае імя для -xdev, для сумяшчальнасці з некаторымі іншымі версіямі знайсці.
-noleaf Ня аптымізаваць, калі выказаць здагадку, што каталогі ўтрымліваюць 2 менш, чым падкаталогі іх жорсткіх спасылак. *
-версія або --version Вывесці нумар знаходкі версіі і выйсці.
-xdev Ня спускацца каталогі на іншых файлавых сістэмах.

* Гэтая опцыя неабходная пры пошуку файлавых сістэм, якія не ідуць каталога спасылак юнікс, такія як CD-ROM або MS-DOS файлавых сістэм або AFS кропкі мантавання тамоў. Кожны каталог на звычайнай Unix файлавай сістэмы мае , па меншай меры , 2 жорсткіх спасылак: яго імя і яго. (Перыяд) ўваход. Акрамя таго, яго падкаталогах (калі такія маюцца) у кожнага ёсць .. запіс , звязаную з гэтай дырэкторыі.

Калі знаходку вывучае каталог, пасля таго, як ён statted два менш , чым падкаталогаў падліку спасылак самога каталога, ён ведае , што астатняя частка запісаў у каталогу зьяўляюцца не-каталогі (файлы ліст у дрэве каталогаў). Калі імёны толькі файлы павінны быць разгледжаны, няма неабходнасці стат іх; гэта дае значнае павелічэнне хуткасці пошуку.

тэсты

Лікавыя аргументы могуць быць вызначаны як:

+ п Для атрымання больш п.
-n Менш чым за п.
N Для дакладнасці п.
-amin п Файл быў апошні доступ да п хвілін таму.
-anewer [файл] Файл быў апошнім даступны пазней , чым файл быў зменены. -anewer ўплывае -follow толькі калі -follow папярэднічае -anewer у камандным радку.
-atime п Файл быў апошні доступ да п * 24 гадзін таму.
-cmin п Статус файла апошняй змены п хвілін таму.
-cnewer [файл] Статус файла быў зменены ў апошні раз пазней, чым файл быў зменены.
- cnewer ўплывае -follow толькі калі -follow папярэднічае -cnewer у камандным радку.
-ctime п Статус файла быў зменены ў апошні раз п * 24 гадзін таму.
-empty Файл пусты і з'яўляецца альбо звычайны файл або каталог.
-False Заўсёды фальшыва.
-fstype [тып] Файл знаходзіцца на файлавай сістэме названага тыпу. Дапушчальныя тыпы файлавых сістэм адрозніваюцца паміж рознымі версіямі Unix; няпоўны пералік тыпаў файлавых сістэм, якія прынятыя на некаторыя версіі Unix ці інакш: UFS, 4.2, 4.3, NFS, TMP, MFS, S51K, S52K. Вы можаце выкарыстоўваць -printf з дырэктывай% F, каб убачыць тыпы вашых файлавых сістэм.
-gid п Лікавая група файла ідэнтыфікатар н.
-група [gname] Файл належыць да групы gname (лікавы ідэнтыфікатар групы дазволена).
-ilname [шаблон] Як -lname, але матч не адчувальны да рэгістра.
-iname [шаблон] Як -name, але матч не адчувальны да рэгістра. Напрыклад, мадэлі оптавалаконны * і F ?? супадаюць з імёнамі файлаў Foo, Foo, Foo, Foo і г.д.
-inum п Файл мае індэксны дэскрыптар ліку п.
-ipath [шаблон] Як -path, але матч не адчувальны да рэгістра.
-iregex [шаблон] Як -regex, але матч не адчувальны да рэгістра.
-links п Файл мае п спасылкі.
-lname [шаблон] Твор з'яўляецца сімвалічнай спасылкай, змесціва якога адпавядае шаблоне абалонкі. Метасімвалы не лячыць / або. адмыслова.
-mmin п Дадзеныя файла Апошняе змяненне п хвілін таму.
-mtime п Дадзеныя файла Апошняе змяненне п * 24 гадзін таму.
-name [шаблон] База імя файла (шлях з вядучымі каталогамі выдалены) адпавядае шаблоне абалонкі. Метасімвалы (*,?, І []) не супадаюць а. у пачатку назвы базы. Каб ігнараваць каталог і файлы ў ім, выкарыстоўвайце -prune; убачыць прыклад у апісанні -path.
-newer [файл] Файл быў зменены пазней , чым файл. Выраз -newer ўплывае -follow толькі калі -follow папярэднічае -newer у камандным радку.
-nouser Ні адзін карыстальнік не адпавядае файлу лікавага ідэнтыфікатара карыстальніка.
-nogroup Ні адна група не адпавядае файла лікавы ідэнтыфікатар групы.
-path [шаблон] Імя файла адпавядае шаблоне шаблон абалонкі. Метасімвалы не лячыць / або. спецыяльна; так, напрыклад, знайсці. -path »./ sr * sc надрукуе запіс для каталога называецца ./src/misc (калі такі існуе). Каб ігнараваць усё дрэва каталогаў, выкарыстоўвайце -prune замест праверкі кожнага файла ў дрэве. Напрыклад, каб прапусціць каталог SRC / Emacs і ўсе файлы і каталогі пад ім, і друкаваць імёны іншых файлаў, знойдзеных, зрабіць нешта накшталт гэтага: знайсці. -path »./ src / emacs '-prune -o -print
-perm [рэжым] Біты правоў файла дакладна [рэжым] (васьмярковых або сімвалічныя). Сімвалічныя рэжымы рэжым 0 выкарыстоўваць у якасці адпраўной кропкі.
-perm -mode Усе біты дазволаў [рэжым] ўстаноўлены для файла.
-perm + рэжым Любы з біт дазволу [рэжым] усталяваны для файла.
-regex [шаблон] Імя файла адпавядае шаблоне рэгулярнага выразы. Гэта матч на ўсім шляху, а не пошук. Напрыклад, каб адпавядаць файл з імем ./fubar3, вы можаце выкарыстоўваць рэгулярны выраз. * Бар. ці. * б. * 3, але не б. * r3.
-Памер п [bckw] Файл выкарыстоўвае п адзінак прасторы. Адзінкі 512-байтавая блокі па змаўчанні , або калі б варта п, байты , калі з п варта, кілабайт , калі да наступнага п, або 2-байтавая словы , калі ш варта п. Памер не ўлічваецца ускосныя блокі, але гэта падлік блокаў у разрэджаных файлаў, якія на самай справе не выдзелены.
-True Заўсёды дакладна.
-тыпу з Файл тыпу з:
б Блок (буферизованный)
з Характар ​​(небуферизован) спецыяльны
d каталог
р Названыя трубы (FIFO)
е звычайны файл
L сімвалічная спасылка
s разетка
D дзверы (Solaris)
-uid п Лікавы ідэнтыфікатар карыстальніка файла з'яўляецца н.
-подержанные п Файл апошняга звароту п дзён пасля яго статус апошняй змены.
-user uname Файл належыць карыстачу uname (лікавы ідэнтыфікатар карыстальніка дазволена).
-xtype з Гэтак жа , як -тыпу , толькі калі файл з'яўляецца сімвалічнай спасылкай. Для сімвалічных спасылак: калі -follow не было дадзена, праўда , калі файл ўяўляе сабой спасылку на файл тыпу с; калі -follow было дадзена, праўда , калі з л. Іншымі словамі, для сімвалічных спасылак,
-xtype правярае тып файла , які тыпу не правярае.

дзеянні

-exec каманда;

Выканаць каманду; праўда, калі 0 стан вяртаецца. Усе наступныя аргументы , каб знайсці прымаюцца быць аргументы каманды , пакуль аргумент , які складаецца з `;" сустракаецца. Радок `{}» замяняецца на імя бягучага апрацоўванага файла ўсюды гэта адбываецца ў аргументы каманды, а не толькі ў спрэчках , дзе ён адзін, як у некаторых версіях знайсці. Абодва гэтыя будынкі, магчыма, павінны быць экранаваныя (з `\ ') або ў двукоссі, каб абараніць іх ад экспансіі абалонкі. Каманда выконваецца ў зыходнай дырэкторыі.

-fls файл

Праўда; як -ls , але запіс у файл , як -fprint.

-fprint файл

Праўда; надрукаваць поўнае імя файла ў файл файл. Калі файл не існуе , калі знаходка запускаецца, ён ствараецца; калі яна сапраўды існуе, то ён абразаецца. Імёны файлаў `` / DEV / STDOUT '' і `` / DEV / STDERR '' апрацоўваюцца адмысловым чынам; яны ставяцца да стандартнага выхаду і стандартны вывад памылак, адпаведна.

-fprint0 файл

Праўда; як -print0 , але запіс у файл , як -fprint.

-fprintf фармат файла

Праўда; як -printf , але запіс у файл , як -fprint.

-ok каманда;

Як -exec але спытаць у карыстальніка першае (на стандартны ўвод); калі адказ не пачынаюцца з `у« ці 'Y », ня запускайце каманду і вярнуцца ілжывым.

-print

Праўда; надрукаваць поўнае імя файла на стандартны вывад, за якім варта сімвал новага радка.

-print0

Праўда; надрукаваць поўнае імя файла на стандартны вывад, а затым нулявы знак. Гэта дазваляе імёны файлаў , якія ўтрымліваюць сімвалы новага радка , каб быць правільна інтэрпрэтаваныя праграмамі , якія апрацоўваюць выхад знайсці.

-printf фармат

Праўда; фармат друку на стандартны вывад, інтэрпрэтацыя '\ «уцёкаў і`%» дырэктыў. Поле шырыні і ўдакладненні могуць быць вызначаны як з PRINTF »функции` C. У адрозненне ад -print, -printf ня дадае сімвал новага радка ў канцы радка. У выслізгвае і дырэктывы:

\ а

Трывожны званок.

\ б

Backspace.

\ с

Неадкладна спыніце друк з гэтага фармату і прамываць выхад.

\ е

Форма падачы.

\ п

Newline.

\ г

Зварот карэткі.

\ т

Гарызантальная табуляцыя.

\ v

Вертыкальная ўкладка.

\\

Літаральны зваротны слеш ( '\').

\ NNN

Сімвал, ASCII код NNN (васьмярковай).

A \ сімвал `» варта любой іншай сімвал разглядаецца як звычайны сімвал, так як яны будуць надрукаваныя.

%%

Літаральны знак адсотка.

% у

Апошні раз атрымаць доступ да файла ў фармаце якое вяртаецца функцыяй C `CTIME».

% A K

Апошні раз атрымаць доступ да файла ў фармаце , зададзеным да, альбо з'яўляецца `« або дырэктывы для C `STRFTIME» функцыя @. Магчымыя значэння для да пералічаныя ніжэй; некаторыя з іх могуць быць недаступныя на ўсіх сістэмах, з-за адрозненняў у `STRFTIME» паміж сістэмамі.

@

секунд з 1 студзеня 1970 году, 00:00 паводле Грынвіча.

Поля часу:

H

гадзіну (00..23)

Я

гадзіну (01..12)

Да

гадзіну (0..23)

L

гадзіну (1..12)

M

хвіліны (00..59)

р

лакалі AM або PM

р

Час, 12-гадзінны (гг: мм: сс [AP] М)

S

другі (00..61)

T

Час, 24-гадзінны (гг: мм: сс)

X

прадстаўленне часу лакалі (Н: М: S)

Z

гадзінны пояс (напрыклад, EDT), ці нічога, калі зона не можа быць вызначана

Поля даты:

скарочаная назва дня тыдня (Sun..Sat)

поўная назва дня тыдня, пераменная даўжыня (Sunday..Saturday)

б

скарочаная назва месяца (Jan..Dec)

У

поўная назва месяца, пераменная даўжыня (January..December)

з

дата і час лакалі (сб 4 лістапада 00:02:33 EST 1989)

d

дзень месяца (01..31)

D

дата (мм / дд / гг)

гадзіну

такі ж, як б

J

дзень года (001..366)

м

месяц (01..12)

U

нумар тыдня ў году з нядзелі ў першы дзень тыдня (00..53)

вага

дзень тыдня (0..6)

W

нумар тыдня ў году з панядзелка ў першы дзень тыдня (00..53)

х

прадстаўленне даты лакалі (мм / дд / гг)

Y

апошнія дзве лічбы года (00..99)

Y

год (1970 ...)

% б

Памер файла ў блоках па 512 байт (акругляецца уверх).

% з

час апошняй змены статусу файла ў фармаце якое вяртаецца функцыяй C `CTIME».

% З да

Апошні раз файла статусу змены ў фармаце , зададзеным да, які з'яўляецца такім жа , як для% А.

% d

Глыбіня файла ў дрэве каталогаў; 0 азначае, што файл з'яўляецца аргументам каманднага радка.

% е

Імя файла з любымі вядучымі каталогаў выдаленыя (толькі апошні элемент).

% F

Тып файлавай сістэмы файл знаходзіцца на; гэта значэнне можа быць выкарыстана для -fstype.

% г

Імя групы файлаў, альбо лікавы ідэнтыфікатар групы, калі група не мае назвы.

% G

лікавая група файла ID.

% г

Вядучыя каталогі імя файла (усе, акрамя апошняга элемента).

% Н

Аргумент каманднага радка, пад якім быў знойдзены файл.

% я

нумар індэкснага дэскрыптара файла (у дзесятковай сістэме).

% да

Памер файла ў 1K блокаў (акругляецца уверх).

% л

Аб'ект сімвалічнай спасылкі (пустая радок, калі файл не з'яўляецца сімвалічнай спасылкай).

% м

біты правоў файла (у васьмярковай сістэме).

% п

Колькасць жорсткіх спасылак на файл.

% р

Імя файла.

% P

Імя файла з імем аргумент каманднага радка, пры якіх ён быў знойдзены выдалены.

% s

Памер файла ў байтах.

% т

час апошняй змены файла ў фармаце, якая вяртаецца функцыяй C `CTIME».

% Т да

Апошні раз файла змены ў фармаце , зададзеным да, які з'яўляецца такім жа , як для% А.

% U

Імя карыстальніка файла, ці лікавы ідэнтыфікатар карыстальніка, калі карыстальнік не мае назвы.

% U

лікавы ідэнтыфікатар карыстальніка файла.

Сімвал `%», а затым любы іншы сімвал адкідаецца (але іншы сімвал друкуецца).

-prune

Калі -depth не дадзена, праўда; ня апускайцеся бягучы каталог.
Калі -depth дадзена, ілжыва; няма эфекту.

-ls

Праўда; спіс бягучага файла ў фармаце `LS -dils 'на стандартны вывад. Адлікі блокаў маюць 1K блокаў, калі зменная POSIXLY_CORRECT асяроддзя не ўсталяваная, і ў гэтым выпадку выкарыстоўвае 512-байтавая блокі.

аператары

Уключаны ў спіс у парадку змяншэння прыярытэту:

(Выраз)

Прымусьце прыярытэт.

! выказваючы

Праўда , калі выраз фальшыва.

-не выказваючы

Тое ж самае! выяўленыя.

expr1 expr2

І (подразумеваете); expr2 ня вылічаецца , калі expr1 з'яўляецца ілжывым.

выражение1 -a выражение2

Тое ж Expr1 expr2.

выражение1 й expr2

Тое ж Expr1 expr2.

выражение1 -o expr2

ці; expr2 ня вылічаецца , калі expr1 гэта праўда.

выражение1 не разагнаўся expr2

Тое ж, што выражение1 -o expr2.

expr1, expr2

спіс; як expr1 і expr2 заўсёды вылічаюцца. Значэнне expr1 адкідаецца; значэнне спісу значэнне expr2.

прыкладаў

знайсці / дом -user джо

Знайсці ўсе файлы ў дырэкторыі / дома, якія належаць карыстачу Джо.

знайсці / USR -name * стат

Знайсці ўсе файлы ў дырэкторыі / USR, якія сканчаюцца на «.stat».

знайсці / уаг / залатнік -mtime +60

Знайсці ўсе файлы ў каталогу / вар / катушка, які быў зменены больш чым 60 дзён таму.

знайсці / TMP -name ядро тыпу F -print | xargs / бен / ГТ -f

Знайсці файлы з імем ядра ці ніжэй каталога / TMP і выдаліць іх. Звярніце ўвагу, што гэта будзе працаваць няправільна, калі ёсць якія-небудзь імёны файлаў, якія змяшчаюць сімвалы новага радка, адзінарныя або двайныя двукоссі, ці прабелы.

знайсці / TMP -name ядро тыпу F -print0 | xargs -0 / бен / ГТ -f

Знайсці файлы з імем ядра ці ніжэй каталога / TMP і выдаліць іх, імёны файлаў , апрацоўку такім чынам , што ў імёнах файлаў і каталогаў , якія змяшчаюць адзінарныя або двайныя двукоссі, прабелы або пераклады радкоў правільна апрацаваны. -name выпрабаванне прыходзіць перад выпрабаваннем -тыпу для таго , каб пазбегнуць таго , каб тэлефанаваць стат (2) на кожны файл.

знайсці. -тыпу е -exec файл '{}' \;

Запускае файл `» на кожны файл у або ніжэй бягучага каталога. Звярніце ўвагу, што дужкі складаюцца ў адзінарныя двукоссі, каб абараніць іх ад інтэрпрэтацыі як сцэнар абалонкі пунктуацыі. Кропка з коскі гэтак жа абаронены выкарыстанне зваротнай касой рысы, хоць і «;» можна было б выкарыстоўваць у гэтым выпадку.

знайсці / \ (-perm -4000 -fprintf /root/suid.txt '% # м% U% р \ N' \), \ \ (-Памер + 100M -fprintf /root/big.txt «% -10s% р \ п »\)

Траверсу файлавай сістэмы толькі адзін раз, пералічваючы Ўіп файлаў і каталогі ў /root/suid.txt і вялікія файлы ў /root/big.txt.

знайсці $ HOME -mtime 0

Пошук файлаў у хатняй дырэкторыі, якія былі змененыя на працягу апошніх дваццаці чатырох гадзін. Гэтая каманда працуе так, таму што час, так як кожны апошняга змянення файла дзеліцца на 24 гадзін і любы рэшту адкідаецца. Гэта азначае , што ў адпаведнасці -mtime

0, файл будзе мець мадыфікацыі ў мінулае , якое складае менш за 24 гадзін таму.

знайсці. -perm 664

Пошук файлаў, якія чытанне і запіс для іх уладальніка і групу, але якія іншыя карыстальнікі могуць чытаць, але не пісаць. Файлы, якія адказваюць гэтым крытэрам, але маюць іншыя дазволу біты, устаноўленыя (напрыклад, калі хто-то можа выканаць файл) не будзе адпавядаць.

знайсці. -perm -664

Пошук файлаў, якія чытанне і запіс для іх уладальніка і групы, і якія іншыя карыстальнікі могуць чытаць, па-за залежнасці ад наяўнасці якіх-небудзь дадатковых бітаў дазволу (напрыклад, выкананы біт). Гэта будзе адпавядаць файл, які мае рэжым 0777, напрыклад.

знайсці. -perm / 222

Пошук файлаў, якія даступныя для запісу кімсьці (іх уладальніка, альбо іх групы ці хто-небудзь іншы).

знайсці. -perm / 220 знаходка. -perm / і + ш, г + W знайсці. -perm / і = ш, г = ш

Усе тры гэтыя каманды робяць тое ж самае, але першы выкарыстоўвае васьмярковай ўяўленне файлавага рэжыму, а два іншых выкарыстоўваць сімвалічную форму. Гэтыя каманды ўсё шукаць файлы, якія даступныя для запісу альбо іх уладальніка або іх групы. Файлы не павінны быць даступныя для запісу як ўладальніка і групы павінны быць узгоднены; альбо будзе рабіць.

знайсці. -perm -220 знаходкі. -perm -g + W, і + ш

Абедзве гэтыя каманды робяць тое ж самае; пошук файлаў, якія даступныя для запісу як іх уладальніка і іх групы.

знайсці. -perm -444 -perm / 222! -perm / 111 знаходкай. -perm -a + г -perm / а + ш! -perm / а + х

Гэтыя дзве каманды і пошук файлаў, якія могуць быць прачытаныя для кожнага (-perm -444 або -perm -a + г), маюць па меншай меры на запісы набору біт (-perm / 222 або -perm / A + W), але не з'яўляюцца выкананымі для каго (! -perm / 111 і! -perm / а + х адпаведна)

Важна: Выкарыстоўвайце каманду чалавека (%) чалавек , каб паглядзець , як каманда выкарыстоўваецца на вашым канкрэтным кампутары.