Користење на Linux и Unix команда: најдете

Командата Линукс и Unix наоѓа извршување на пребарување на датотеки во хиерархија на директориуми.

Синтакса за команда за наоѓање :

најдете [патека ...] [израз]

Опис

Оваа страница со упатства ја документира верзијата за наоѓање на ГНУ. Командата го бара пребарувањето на дрвото на директориуми кое е вкоренето во секое дадено име на датотека со евалуација на дадениот израз од лево надесно, според правилата на приоритет (види дел за оператори подолу), додека исходот не е познат; со други зборови, левата страна е лажна за и операции, точно за или , во која точка наоѓаат потези кон наредното име на датотека.

Првиот аргумент кој започнува со:

се смета дека е почеток на изразот; сите аргументи пред него се патеки за пребарување, и сите аргументи по него се остатокот од изразот. Ако не се дадени патеки, се користи тековниот директориум. Ако не е даден израз, се користи изразот -принта .

Командата за наоѓање излегува со статус 0 ако сите датотеки се обработуваат успешно, поголема од 0 ако се појават грешки.

Изразите

Изразот е составен од опции (кои влијаат на целокупното работење, а не на обработката на одредена датотека, и секогаш се враќаат точно), тестови (кои враќаат вистинска или лажна вредност) и акции (кои имаат несакани ефекти и враќаат вистински или лажна вредност), сите разделени од оператори. Изразот - и се претпоставува кога операторот е испуштен. Ако изразот не содржи никакви дејствија, освен -прена , потоа -принта се изведува на сите датотеки за кои изразот е точно.

Опции

Сите опции секогаш се враќаат точно. Тие секогаш стапуваат на сила, наместо да бидат обработени само кога се постигнува нивното место во изразот. Затоа, за јасност, најдобро е да ги поставите на почетокот на изразот.

-дневно Измерете ги времињата (за- амин, -време, -мини, -време, -mmin и -време ) од почетокот на денес, а не од пред 24 часа.
-да Обработете ја содржината на секој директориум пред самиот директориум.
- следи Dereference симболички врски. Имплицира - noleaf .
- помош или помош Печати краток преглед на користењето на командната линија за наоѓање и излез.
-maxdepth [број] Се спушта најмногу број на нивоа (не-негативен цел број) од директориумите под аргументите на командната линија. Изразот -maxdepth 0 значи само да ги примени тестовите и дејствијата на аргументите на командната линија.
- ум [број] Не применувајте тестови или акции на ниво помало од бројот (не-негативен цел број). Изразот -mindepth 1 значи обработка на сите датотеки, освен аргументите на командната линија.
-број Не спуштајте директориуми на други датотечни системи. Алтернативно име за -xdev , за компатибилност со некои други верзии на наоѓање .
-Нолеф Не оптимизирајте се со претпоставка дека директориумите содржат 2 помалку поддиректориуми отколку нивниот број на тврди врски. *
-верзија или - верзија Отпечатете го бројот за пребарување и излегувајте.
-xdev Не спуштајте директориуми на други датотечни системи.

* Оваа опција е потребна кога пребарувате датотечни системи кои не ја следат конвенцијата на Unix директориумот, како што се CD-ROM или MS-DOS датотечни системи или точките за монтирање на точката AFS. Секој директориум во нормален Unix датотечен систем има најмалку 2 тврди врски: неговото име и неговото име . (период) влез. Покрај тоа, нејзините поддиректориуми (ако ги има) секој има ... запис поврзан со тој директориум.

Кога find го испитува директориумот, откако ќе има објавено два помалку поддиректориуми од броењето врски на директориумот, знае дека останатите записи во директориумот се не-директориуми ( лист- датотеки во дрвото на директориуми). Ако само имињата на датотеките треба да се испитаат, нема потреба да ги објавувате; ова дава значително зголемување на брзината на пребарување.

Тестови

Нумерички аргументи може да се специфицираат како:

+ n За поголема од n.
-n За помалку од n.
n За точно n.
-амин n Датотеката беше последно пристапена пред неколку минути.
- уште [датотека] Датотеката беше последно посетена неодамна од датотеката беше изменета. -наоѓањето е под влијание на -поддршка само ако -после доаѓа пред -користење на командната линија.
-време бр Датотеката беше последно пристапена n * пред 24 часа.
-cmin n Статус на датотеката беше последен пат изменета пред неколку минути.
-cnower [датотека] Статусот на датотеката беше последен пат изменета во последно време од датотеката беше изменета.
- cnewer е засегната од -после само ако -после доаѓа пред -познавање на командната линија.
-сим Статусот на датотеката беше последен пат изменето n * пред 24 часа.
-сестра Датотеката е празна и е или обична датотека или директориум.
- неточно Секогаш неточно.
-fstype [тип] Датотеката е на датотечен систем од определен тип. Валидните типови на датотечни системи варираат помеѓу различни верзии на Unix; нецелосна листа на типови на датотечни системи кои се прифатени на некоја верзија на Unix или друга е: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Можете да го користите -printf со% F директивата за да ги видите типовите на вашите датотечни системи.
-gid n ID на нумеричката група на датотеката е n .
-групи [gname] Датотеката припаѓа на групата gname (дозволено е нумеричко групно ID).
-именово [образец] Како-име, но натпреварот е нечувствителен на случај.
-имин [образец] Како- име , но натпреварот е нечувствителен на случај. На пример, обрасците за * и F? одговара на имињата на датотеките Foo , FOO , foo , fOo , итн.
-инум n Датотеката има индекс број n .
-пат [модел] Како-пат, но натпреварот е нечувствителен на случај.
-регекс [образец] Како -regex, но натпреварот е нечувствителен на случај.
- линкови n Датотеката има n линкови.
-слика [образец] Датотеката е симболичка врска чија содржина одговара на шемата. Метачите не ги третираат / или . специјално.
-mmin n Податоците на датотеката беа последно изменети пред неколку минути.
-mtime n Податоците на датотеката беа последно изменети n * пред 24 часа.
-име [шема] База на името на датотеката (патеката со отстранети водечки именици) се совпаѓа со школка шема. Меташите ( * ,? И [] ) не се совпаѓаат со . на почетокот на базното име. За да ги игнорирате директориумот и датотеките под него, користете -прена ; види пример во описот на -path .
-неер [датотека] Датотеката беше изменета неодамна од датотеката . Изразот -newer е под влијание на -поддршка само ако -после доаѓа пред- ново на командната линија.
-малку Ниту еден корисник не одговара на нумерички кориснички ID на датотеката.
-група Ниту една група не одговара на идентификацијата на нумеричката група на датотеката.
-пат [образец] Името на датотеката се совпаѓа со шема на шаблони . Метачите не ги третираат / или . специјално; така, на пример, најдете. -path './sr*sc ќе отпечати запис за именик наречен ./src/misc (ако постои). За да се игнорира целото дрво на директориуми, користете го - наместо да ја проверувате секоја датотека во дрвото. На пример, за да го прескокнете директориумот src / emacs и сите датотеки и директориуми под него и да ги испечатите имињата на другите пронајдени датотеки, направете нешто слично на ова: најдете. -path './src/emacs -prune -o -print
-перм [режим] Биттите за дозволи на датотеката се точно [мод] (осум или симболички). Симболичните режими го користат режимот 0 како појдовна точка.
-перм -мод Сите датотеки за дозволи [мод] се поставени за датотеката.
-перм + режим Секој од битките за дозвола [мод] е поставен за датотеката.
-регекс [образец] Името на датотеката се совпаѓа со моделот на регуларниот израз Ова е совпаѓање на целата патека, а не пребарување. На пример, за да одговарате на датотека со име ./fubar3, можете да го користите регуларниот израз . * Бар. или . * b. * 3 , но не b. * r3 .
- големина n [bckw] Датотеката користи n единици на простор. Единиците се стандардно стандардни 512-бајт блокови или ако b следи n , бајти ако c следи n , килобајти ако k следи n , или 2-бајт зборови ако w следува n . Големината не брои индиректни блокови, но ги брои блоковите во редок фајл кој не е всушност доделен.
-Трој Секогаш точно.
-тип c Датотеката е од типот c :
б Блок (ублажен) специјален
в Карактер (небуфериран) посебен
d Директориум
стр Именувана цевка (FIFO)
f Редовна датотека
л Симболичка врска
s Socket
Д врата (Соларис)
-уид n Бројниот кориснички ID на датотеката е n .
-употребуван n Датотеката беше последно пристапена не неколку дена откако нејзиниот статус беше последен.
- обични луѓе Датотеката е во сопственост на корисник.
-текст в Исто како и типот, освен ако датотеката е симболичка врска. За симболички врски: доколку -под не е даден, точно ако датотеката е врска до датотека од типот c ; ако е дадено- следно , точно ако c е 1. Со други зборови, за симболички врски,
-stype го проверува типот на датотеката која што -пот не ја проверува.

Акции

-exec команда ;

Изврши команда ; точно ако се врати 0 статусот. Сите аргументи што ќе се пронајдат се сметаат за аргументи за командата до аргумент што се состои од `; ' се среќава. Низата `{} 'се заменува со сегашното име на датотека што се обработува насекаде каде што се појавува во аргументите на командата, не само во аргументите каде што е само, како во некои верзии на наоѓање . И двете од овие конструкции можеби ќе треба да се избегнат (со `\ ') или да се цитираат за да се заштитат од проширувањето од страна на школка. Командата се извршува во почетниот директориум.

-fls датотека

Точно; како -ls, но пишете во датотека како -запис.

- датотека за печатење

Точно; печатете го целосното име на датотека во датотечна датотека . Ако датотеката не постои кога се извршува пребарувањето, таа се создава; ако постои, тоа е скратено. Имињата на датотеките `` / dev / stdout '' и `` / dev / stderr '' се обработуваат специјално; тие се однесуваат на стандардниот излез и стандардната грешка, соодветно.

-fprint0 датотека

Точно; како -print0, но запишете во датотека како -запис.

-fprintf формат на датотека

Точно; како -printf, но запишете во датотека како -запис.

-ок команда ;

Како -exec, но прво прашајте го корисникот (на стандардниот влез); ако одговорот не започне со `y 'или` Y', не ја извршувајте командата и вратете се false.

-принт

Точно; испечатете го целото име на датотеката на стандардниот излез, проследено со нова линија.

-print0

Точно; испечатете го целото име на датотеката на стандардниот излез, проследено со нулти знак. Ова им овозможува на имиња на датотеки кои содржат нови линии за да бидат правилно интерпретирани од програми кои го обработуваат излезниот резултат.

-printf формат

Точно; формат за печатење на стандардниот излез, толкување на `\ 'бегања и`%' директиви. Ширината и прецизноста на полето може да се специфицираат како со функцијата `printf 'C. За разлика од -print, -printf не додава нова линија на крајот на стрингот. Бегањата и директивите се:

\ а

Аларм.

\ b

Backspace.

\ c

Стоп за печатење од овој формат веднаш и измијте го излезот.

\ f

Форма храна.

\ n

Newline.

\ r

Враќање на превозот.

\ t

Хоризонтален таб.

\ v

Вертикален таб.

\\

А буквална обратна коса црта (`\ ').

\ NNN

Ликот чиј ASCII код е NNN (октален).

Знакот `\ 'проследен со кој било друг знак се третира како обичен знак, па и двете се отпечатени.

%%

Знак за буквален процент.

% a

Последно време за пристап на датотеката во форматот вратен од функцијата C `ctime '.

% A k

Последното време за пристап на датотеката е во форматот определен од k , што е или `@ 'или директива за функцијата C` strftime'. Можните вредности за k се наведени подолу; некои од нив можеби нема да бидат достапни на сите системи, поради разликите во "strftime" помеѓу системите.

@

секунди од 1 јануари 1970 година, 00:00 GMT.

Временски полиња:

H

час (00..23)

Јас

час (01..12)

к

час (0..23)

л

час (1..12)

М.

минута (00..59)

стр

локален AM или PM

р

време, 12-часовен (hh: mm: ss [AP] M)

S

втора (00..61)

Т

време, 24-часовен (hh: mm: ss)

X

Временска застапеност на локале (H: M: S)

Z

временска зона (на пример, EDT), или ништо, ако не е одредена временска зона

Датум на полиња:

a

скратено име на денот на неделата на локале (Sun..Sat)

A

полн датум на име на локал, променлива должина (недела..Сануари)

б

скратено име на локалитетот (Jan..Dec)

Б.

полн месец име на локацијата, променлива должина (јануари .. декември)

в

датум и време на локацијата (саб. 04 но. 12:02:33 EST 1989)

d

ден од месецот (01..31)

Д

датум (mm / dd / yy)

h

исто како и б

j

ден од годината (001..366)

м

месец (01..12)

U

недела број на година со недела како прв ден од седмицата (00..53)

w

ден од неделата (0..6)

W

недела број на година со понеделник како прв ден од неделата (00..53)

x

претстава за датумот на локале (mm / dd / yy)

y

последните две бројки од годината (00..99)

Y

година (1970 ...)

% b

Големина на датотеката во 512-бајт блокови (заокружена).

% c

Последна промена на статусот на датотеката во формат вратен од функцијата C `ctime '.

% C k

Последното време на промена на статусот на датотеката во формат специфициран од k , што е ист како кај% A.

% d

Длабочина на датотеката во дрвото на директориуми; 0 значи дека датотеката е аргумент за командната линија.

% f

Името на датотеката со сите водечки директориуми е отстрането (само последниот елемент).

% F

Тип на датотечниот систем на датотеката е вклучена; оваа вредност може да се користи за -fstype.

% g

Името на групата на датотеката, или нумеричката група, ако групата нема име.

% G

ID на нумеричка група на датотеката.

% h

Водечките директориуми за името на датотеката (сите освен последниот елемент).

% H

Аргумент за командната линија под која датотека е пронајдена.

% i

Број на инод на датотеката (во децимали).

% k

Големина на датотеката во 1K блокови (заокружена).

% l

Објект на симболичка врска (празен стринг ако датотеката не е симболичка врска).

% m

Битс за дозволи на датотеката (во осумнаесет).

% n

Број на тврди врски до датотеката.

% p

Име на датотеката.

% P

Името на датотеката со името на аргументот на командната линија под кој беше пронајдено отстрането.

% s

Големина на датотеката во бајти.

% t

Последното модифицирање на датотеката во форматот вратен од функцијата C `ctime '.

% T k

Последното модифицирање на датотеката во формат специфициран од k , што е исто како и за% A.

% u

Корисничко име на датотеката, или нумеричко корисничко име ако корисникот нема име.

% U

Број за идентификација на датотеката.

Знакот `% 'проследено со кој било друг знак е отфрлен (но другиот знак е отпечатен).

-прено

Ако -да не е дадена, точно; не спуштајте го тековниот директориум.
Ако -да е дадена, лажна; нема ефект.

-Ли

Точно; листа на тековната датотека во формат `ls -dils` на стандардниот излез. Блокалните броеви се со 1K блок, освен ако не е поставена променливата на околина POSIXLY_CORRECT, во кој случај се користат 512-бајт блокови.

Оператори

Наведени по редослед на опаѓање:

( expr )

Приоритет на сила.

! expr

Точно ако expr е неточно.

-не expr

Исто како ! expr .

expr1 expr2

И (имплицирано); expr2 не се оценува ако expr1 е неточно.

expr1 -a expr2

Исто како expr1 expr2 .

expr1- и expr2

Исто како expr1 expr2 .

expr1 -o expr2

Или; expr2 не се оценува ако expr1 е точен.

expr1- или expr2

Исто како expr1 -o expr2 .

expr1 , expr2

Листа; и expr1 и expr2 секогаш се оценуваат. Вредноста на expr1 е отфрлена; вредноста на листата е вредноста на expr2 .

Примери

најде / дома-корисник Џо

Најдете ја секоја датотека под директориумот / дома во сопственост на корисникот Џо.

најдете / usr -name * stat

Најдете ја секоја датотека под директориумот / usr што завршува во ".stat".

најдете / var / spool -mtime + 60

Пронајдете ја секоја датотека под директориумот / var / spool која беше модифицирана пред повеќе од 60 дена.

find / tmp -name core -type f -print | xargs / bin / rm -f

Пронајдете ги датотеките наречени core во или под директориумот / tmp и избришете ги. Забележете дека ова ќе работи погрешно ако има некое име што содржи нови линии, единечни или двојни цитати или празни места.

find / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

Пронајдете ги датотеките наречени core во или под директориумот / tmp и ги избришете, обработувајќи ги имињата на датотеки на таков начин што имињата на датотеките или директориумите кои содржат единечни или двојни цитати, празни места или нови линии се правилно ракувани. Тестот -name доаѓа пред тестирањето на типот, со цел да се избегне да се јави стат (2) на секоја датотека.

најдете. -тип f -exec датотека '{}';

Извршува `датотека` на секоја датотека во или под тековниот директориум. Забележете дека заградите се затворени со единечни цитати за да ги заштитат од интерпретација како интерпункциски знаци на интерпретација. Слично на точка и запирка е заштитена со употреба на обратна коса црта, иако ";" може да се искористи и во тој случај.

пронајдете / \ (-perm -4000 -fprintf / root / suid.txt '% # m% u% p \ n' \), \ \ (-size + 100M -fprintf /root/big.txt '% -10s% p \ n '\)

Преминете го датотечниот систем само еднаш, наведувајќи ги setuid датотеките и директориумите во /root/suid.txt и големи датотеки во /root/big.txt .

најдете $ HOME -mtime 0

Пребарувајте датотеки во вашиот домашен директориум, кои биле модифицирани во последните дваесет и четири часа. Оваа команда работи на овој начин бидејќи времето откако секоја датотека беше последно изменета е поделена за 24 часа и кој било остаток се отфрла. Тоа значи дека за да се совпадне -време

0 , датотеката ќе мора да има модификација во минатото што е пред помалку од 24 часа.

најдете. -перм 664

Барајте датотеки кои имаат дозвола за читање и пишување за нивниот сопственик и група, но кои други корисници можат да читаат, но не да пишуваат. Датотеките кои ги исполнуваат овие критериуми, но имаат поставено други битови дозволи (на пример, ако некој може да ја изврши датотеката) нема да се совпаѓаат.

најдете. -перм -664

Пребарувајте датотеки кои имаат дозвола за читање и запишување за нивниот сопственик и група и кои други корисници можат да ги прочитаат, без оглед на присуството на било какви дополнителни дозволи битови (на пример извршниот бит). Ова ќе одговара на датотека која има мод 0777, на пример.

најдете. -перм / 222

Пребарувајте датотеки што може да ги запишува некој (нивниот сопственик, или нивната група или некој друг).

најдете. -перм / 220 најде. -perm / u + w, g + w најдете. -perm / u = w, g = w

Сите три од овие команди го прават истото, но првиот користи октална застапеност на датотечниот режим, а другите две ја користат симболичката форма. Овие команди сите бараат датотеки кои можат да се запишуваат или од нивниот сопственик или од нивната група. Датотеките не мора да бидат запишани од страна на сопственикот и групата што треба да се совпаѓа; или ќе стори.

најдете. -Перм -220 најдете. -перм -g + w, u + w

И двете овие команди го прават истото; барај датотеки кои можат да се запишуваат и од нивниот сопственик и од нивната група.

најдете. -perm -444 -perm / 222! -перм / 111 најде. -perm -a + r -perm / a + w! -perm / a + x

Овие две команди бараат и датотеки што може да се читливи за секого (-perm -444 или -perm -a + r), имаат барем поставено битови (-perm / 222 или -perm / a + w), но не се извршуваат за секој (! -perm / 111 и! -perm / a + x соодветно)

Важно: Користете ја командата за човекот ( % man ) за да видите како се користи командата на вашиот компјутер.