Командата Linux и Unix намирам изпълнява търсене на файлове в йерархия на директориите.
Синтаксис за намирам команда:
намерете път … израз
описание
Тази ръководна страница документира версията GNU на намирам , Командата намирам търси в дървото на директорията, вкоренено във всяко дадено име на файл, като оценява дадения израз от ляво на дясно, в съответствие с правилата за предимство (вж. раздел "Оператори по-долу"), докато резултатът не бъде известен; с други думи, лявата страна е невярна и операции, вярно за или , в който момент намирам преминава към следващото име на файла.
Първият аргумент, който започва с:
- -
- ( или ),
- !
се приема за началото на израза; всички аргументи преди това са пътища за търсене, а всички аргументи след него са останалият израз. Ако няма дадени пътища, се използва настоящата директория. Ако няма израз, изразът -print се използва.
Най- намирам командата излиза със състояние 0, ако всички файлове се обработват успешно, повече от 0, ако възникнат грешки.
изрази
Изразът се състои от опции (които засягат цялостната операция, а не обработката на конкретен файл и винаги върнат true), тестовете (които връщат истинска или невярна стойност) и действията (които имат странични ефекти и връщат истинска или фалшива стойност), всички отделени от операторите. Изразът -и се приема, когато операторът е пропуснат. Ако изразът не съдържа други действия освен -prune , тогава -print се изпълнява на всички файлове, за които изразът е вярно.
Настроики
Всички опции винаги се връщат вярно. Те винаги действат, вместо да се обработват само когато се достигне мястото им в израза. Ето защо, за яснота, най-добре е да ги поставите в началото на израза.
| -daystart | Мярка пъти (за -amin, -atime, -cmin, -time, -min, и -mtime ) от началото на днес, а не от преди 24 часа. |
| -depth | Обработвайте съдържанието на всяка директория преди самата директория. |
| -последвам | Демонстрация символни връзки. Предполага -noleaf . |
| -помогне или --помогне | Отпечатайте резюме на използването на командния ред на намирам и излизане. |
| -maxdepth Номер | Спускане на най-много нива (неотрицателно цяло число) на директории под аргументите на командния ред. Изразът -maxdepth 0 означава, че тестовете и действията се прилагат само към аргументите на командния ред. |
| -mindepth число | Не прилагайте никакви тестове или действия на нива, по-малки от броя (неотрицателно цяло число). Изразът -наделение 1 означава процес на всички файлове, с изключение на аргументите на командния ред. |
| -mount | Не спускайте директории на други файлови системи. Алтернативно име за -xdev , за съвместимост с някои други версии на намирам . |
| -noleaf | Не оптимизирайте, като приемете, че директорите съдържат по-малко поддиректории от техния брой на твърдите връзки. * |
| -version или --version | Отпечатайте намирам номер на версията и изход. |
| -xdev | Не спускайте директории на други файлови системи. |
* Тази опция е необходима при търсене на файлови системи, които не спазват конвенцията Unix директория-линк, като CD-ROM или MS-DOS файлови системи или точки за монтиране на AFS. Всяка директория на нормална Unix файлова система има поне 2 твърди линка: нейното име и нейната. (период) влизане. Освен това има поддиректории (ако има такива). запис, свързан с тази директория.
Кога намирам разглежда директория, след като е определила по-малко поддиректории от броя на връзките на директорията, знае, че останалите записи в директорията не са директории ( листо файлове в дървото на директориите). Ако е необходимо да бъдат разгледани само имената на файловете, няма нужда да ги разпознавате; това дава значително увеличение на скоростта на търсене.
Тестове
Числните аргументи могат да бъдат определени като:
| + п | За по - голяма от п. |
| -н | За по-малко от п. |
| п | За точно това п. |
| -amin n | Последният файл бе достъпен п преди минути. |
| -неже файл | Файлът е бил последно достъпен последно от досие беше променено. -ефектът е засегнат от -последствие, само ако -последи се пред -ответно на командния ред. |
| -atime n | Последният файл бе достъпен п * Преди 24 часа. |
| -cmin n | Състоянието на файла е променено за последен път п преди минути. |
| -cnewer файл | Най-скоро състоянието на файла е променено по-скоро, отколкото е променен файлът.- cnewer е засегната от -последвам само ако -последвам идва преди -cnewer на командния ред. |
| -ч.време | Състоянието на файла е променено за последен път п * Преди 24 часа. |
| -empty | Файлът е празен и е обикновен файл или директория. |
| -false | Винаги невярно. |
| -fstype тип | Файлът е на файлова система от определен тип. Видовете валидни файлови системи варират между различните версии на Unix; непълният списък на типовете файлови системи, които са приети за някои версии на Unix или други, е: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Можете да използвате -printf с директивата% F, за да видите видовете файлови системи. |
| -Gid n | Идентификационният номер на груповата група на файла е п . |
| -група име | Файлът принадлежи към групата gname (разрешено е номерът на идентификационната група). |
| - име модел | Подобно на -iname, но мачът е нечувствителен към буквите. |
| -име модел | като -name , но мачът е нечувствителен към буквите. Например, моделите FO * и F ?? съвпадат с имената на файловете Foo , FOO , Foo , Foo и др. |
| -inum n | Файлът има индоден номер п . |
| -ipath модел | като -path , но мачът е нечувствителен към буквите. |
| -режекс модел | Подобно на -regex, мачът не е чувствителен към буквите. |
| -връзки n | Файлът е п връзки. |
| -информация модел | Файлът представлява символна връзка, чието съдържание съвпада с шаблона. Метахарактарите не се лекуват / или . специално. |
| -mmin n | Данните на файла бяха последно променени п преди минути. |
| -мм | Данните на файла бяха последно променени п * Преди 24 часа. |
| -name модел | Базата на името на файла (пътят с водещите директории е премахнат) съответства на шаблона на обвивката. Метахарактарите (*, ?, и ) не съвпадат с a . в началото на базовото име. За да пренебрегнете директорията и файловете под нея, използвайте -prune ; вижте пример в описанието на -path . |
| -newer файл | Файлът бе променен наскоро от досие , Изразът -newer е засегната от -последвам само ако -последвам идва преди -newer на командния ред. |
| -nouser | Никой потребител не отговаря на цифровия идентификационен номер на файла. |
| -nogroup | Групата не съответства на идентификационния номер на номерата на файла. |
| -често модел | Името на файла съвпада с шаблона модел , Метахарактарите не се лекуват / или . специално; така че, например,намирам . -path "./sr*sc ще отпечата запис за директория, наречена ./src/misc (ако има такава). За да пренебрегнете цялото дърво на директориите, използвайте -prune вместо да проверявате всеки файл в дървото. Например, за да прескочите директорията src / emacs и всички файлове и директории под нея и да отпечатате имената на другите намерени файлове, направете нещо подобно:намирам . -path "./src/emacs '-prune -o -print |
| -perm режим | Битовете за разрешение на файла са точно Режим (осма или символична). Символните режими използват режим 0 като отправна точка. |
| -пермония | Всички битове за разрешение Режим са зададени за файла. |
| -perm + режим | Всяко от разрешите бита Режим са зададени за файла. |
| -regex модел | Името на файла съвпада с регулярния израз модел , Това е съвпадение по целия път, а не търсене. Например, за да съответствате на файл, наречен ./fubar3, можете да използвате регулярния израз . * Бар. или . * Б. * 3, но не б. * r3. |
| -разпределение n bckw | Използва се файла п единици на пространството. Устройствата са блокове от 512 байта по подразбиране или ако b последва п , байтове, ако последва п , килобайти, ако к следва п , или 2-байт думи, ако w следва п , Размерът не включва индиректни блокове, но брои блокове в разпиляни файлове, които всъщност не са разпределени. |
| -вярно | Винаги е вярно. |
| -type c | Файлът е от тип ° С : |
| б | Блокиран (буфериран) специален |
| ° С | Специален символ (небуфериран) |
| д | указател |
| р | Наименувана тръба (FIFO) |
| е | Редовен файл |
| л | Символична връзка |
| с | гнездо |
| д | (Solaris) |
| -uid n | Номерът на потребителския идентификационен номер на файла е п . |
| -used n | Последният файл бе достъпен п дни след последното му изменение. |
| -позволявам на потребителя | Файлът е собственост на потребителя uname (разрешено е номерът на идентификатора на потребителя). |
| -xtype c | Същото като -Тип освен ако файлът не е символична връзка. За символните връзки: ако -последвам не е даден, вярно, ако файлът е връзка към файл от тип ° С ; ако -последвам е дал, вярно, ако ° С е л. С други думи, за символните връзки, -xtype проверява вида на файла -Тип не проверява. |
мерки
-exec команда ;
Изпълни команда ; true, ако се върне статус 0. Всички следващи аргументи къмнамирам се приемат за аргументи на командата, докато аргумент, състоящ се от ";" се среща. Низът "{}" се заменя от текущото име на файла, което се обработва навсякъде, където се намира в аргументите на командата, а не само в аргументи, когато е сама, както при някои версии нанамирам, И двете конструкции може да се нуждаят от избягване (с "") или цитирани, за да ги предпазят от разширяване от корпуса. Командата се изпълнява в стартовата директория.
-fls досие
Вярно; като "-л, но пишете на досие като -fprint.
-fprint досие
Вярно; отпечатайте пълното име на файл в файл досие , ако досие не съществува, когатонамирам се изпълнява; ако тя съществува, тя е съкратена. Имената на файловете "/ dev / stdout" и "/ dev / stderr" се обработват специално; те се отнасят съответно до стандартния изходен сигнал и стандартната грешка.
-fprint0 досие
Вярно; като -print0, но пише на досие като -fprint.
-fprintf досие формат
Вярно; като -printf, но пишете на досие като -fprint.
-Добре команда ;
Подобно на -exec, но първо попитайте потребителя (на стандартния вход); ако отговорът не започва с "y" или "Y", не изпълнявайте командата и връщайте фалшива.
Вярно; отпечатайте пълното име на файла на стандартния изход, последван от нов ред.
-print0
Вярно; отпечатайте пълното име на файла на стандартния изход, последван от нулев знак.Това позволява имената на файловете, които съдържат нови редове, да бъдат правилно интерпретирани от програмите, които обработватнамирам изход.
-printf формат
Вярно; печат формат върху стандартния изход, интерпретирайки директивите ` 'escapes и`%'. Широчината и точността на полетата могат да се задават както при функцията "printf" C. За разлика от -print, -printf не добавя нов ред в края на низа. Избягванията и директивите са:
а
Аларма за звънене.
б
Backspace.
° С
Спрете незабавно печат от този формат и измийте изхода.
е
Форма за захранване.
Н
Нова линия.
R
Предаване на карето.
T
Хоризонтален раздел.
о
Вертикален раздел.
\
Буквално наклонена черта ("").
NNN
Знакът, чийто ASCII код е NNN (осмичен).
А знак "", последван от всеки друг знак, се третира като обикновен знак, така че и двете се отпечатват.
%%
Буквален знак за процента.
% на
Последното време за достъп на файла във формата, върнат от функцията C `ctime.
А% к
Последното време за достъп на файла в посочения от него формат к , който е или "@", или директива за функцията C` strftime. Възможните стойности за к са изброени по-долу; някои от тях може да не са налични на всички системи поради разликите в "strftime" между системите.
@
секунди от 1 януари 1970 г., 00:00 GMT.
Времеви полета:
Н
час (00..23)
аз
час (01..12)
к
час (0..23)
л
час (1..12)
М
минута (00..59)
р
AM или PM на местните власти
R
време, 12 часа (hh: mm: ss AP M)
С
втори (00..61)
T
време, 24 часа (hh: mm: ss)
х
локалното представяне на времето (H: M: S)
Z
(напр. EDT) или нищо, ако няма определена часова зона
Полета за дата:
а
локализираното съкратено име на седмицата (Sun..Sat)
А
локално име на седмицата, променлива дължина (неделя, събота)
б
локалното съкратено име на месеца (Jan..Dec)
B
локално име на пълния месец, променлива дължина (януари - декември)
° С
дата и час на локализацията (Sat Nov 04 12:02:33 EST 1989)
д
ден от месеца (01..31)
д
дата (мм / дд / гг)
з
същите като b
к
ден от годината (001..366)
m
месец (01..12)
U
седмица номер на годината с неделя като първи ден от седмицата (00..53)
w
ден от седмицата (0..6)
W
седмица номер на годината с понеделник като първи ден от седмицата (00..53)
х
представяне на локалната дата (мм / дд / гг)
ш
последните две цифри на годината (00..99)
Y
година (1970 …)
б%
Размер на файла в блокове от 512 байта (закръглени нагоре).
%° С
Последното време за промяна на статуса на файла във формата, върната от функцията C `ctime.
%° С к
Последното време за промяна на статуса на файла във формата, определен от к , което е същото като за% А.
%д
Дълбочина на файла в дървото на директориите; 0 означава, че файлът е аргумент на командния ред.
% е
Името на файла с премахнати водещи директории (само последния елемент).
% F
Тип на файловата система, в която файлът е включен; тази стойност може да се използва за -ftype.
% г
Името на групата на файла или идентификационния номер на групата, ако групата няма име.
% G
Идентификационният номер на груповата група на файла.
% з
Водещи директории на името на файла (всички освен последния елемент).
% Н
Аргумент на командния ред, под кой файл е намерен.
% и
Идентификационният номер на файла (в десетичен).
% к
Размер на файла в 1K блокове (закръглена нагоре).
% L
Обект на символна връзка (празен низ, ако файлът не е символична връзка).
% т
Битовете за разрешение на файла (на осмичен).
% п
Брой твърди връзки към файл.
% р
Името на файла.
% P
Името на файла с името на аргумента на командния ред, под който е намерен премахнат.
%с
Размер на файла в байтове.
%T
Последното време за промяна на файла във формата, върната от функцията C `ctime.
%T к
Последното време за промяна на файла в посочения от него формат к , което е същото като за% А.
% ф
Потребителското име на файла или цифров идентификационен номер на потребителя, ако потребителят няма име.
% U
Номерът на потребителския идентификатор на файла.
Знакът "%", последван от друг знак, се отхвърля (но се отпечатва и другият знак).
-prune
Ако -да не е дадено, вярно; не спускайте текущата директория.Ако е дадена -дефт, фалшива; без ефект. -ls Вярно; списък на текущия файл в "ls -dils" формат на стандартен изход. Брой блокове са от 1K блокове, освен ако не е зададена променливата POSIXLY_CORRECT за околната среда, в който случай се използват блокове от 512 байта. Посочени в низходящ ред: ( ИЗРАЗът ) Принудително предимство. ! ИЗРАЗът Вярно е, ако ИЗРАЗът е невярно. -не ИЗРАЗът Същото като ! ИЗРАЗът . expr1 expr2 И (подразбиращи се); expr2 не се оценява, ако expr1 е невярно. expr1 -а expr2 Същото като expr1 expr2 . expr1 -и expr2 Същото като expr1 expr2 . expr1 -o expr2 Или; expr2 не се оценява, ако expr1 истина е. expr1 -или expr2 Същото като expr1 -o expr2 . expr1 , expr2 Списък; и двете expr1 и expr2 се оценяват винаги. Стойността на expr1 се изхвърля; стойността на списъка е стойността на expr2 . намерете / home-user joe
Намерете всеки файл под директорията / дома, собственост на потребителя joe. намерете / usr -name * stat
Намерете всеки файл под директорията / usr, завършваща с ".stat". намерете / var / spool -mtime +60
Намерете всеки файл под директорията / var / spool, който е бил променен преди повече от 60 дни. find / tmp - име ядро-тип f -print | xargs / bin / rm -f
Търсене на файлове с имесърцевина в или под указателя/ TMP и ги изтрийте.Имайте предвид, че това ще работи неправилно, ако има имена на файлове, съдържащи нови линии, единични или двойни кавички или интервали. find / tmp - име ядро - тип f -print0 | xargs -0 / bin / rm -f
Търсене на файлове с имесърцевина в или под указателя/ TMP и да ги изтриете, обработвайки имена на файлове по такъв начин, че имената на файлове или директории, съдържащи единични или двойни котировки, интервали или нови линии, се обработват правилно. Най--name тестът идва преди-Тип тест, за да не се налага да се обаждатеStat (2) на всеки файл. намирам . -type f -exec файл '{}' ;
Изпълнява файла на всеки файл в или под текущата директория. Забележете, че скобите са приложени в единични цитати, за да ги защитите от интерпретацията като интерпретации на скрипт на shell. Точката на точка и запетая също е защитена чрез използването на обратна наклонена черта, макар че ";" би могло да се използва и в този случай. намерете / (-perm -4000 -fprintf /root/suid.txt '% # m% u% p n' ), (-измерване + 100M -fprintf /root/big.txt "% -10s% p n ')
Прехвърлете файловата система само веднъж, като изброите файловете и директорите в тях/root/suid.txt и големи файлове в/root/big.txt. намерете $ HOME - време 0
Потърсете файлове в домашната си директория, които са променени през последните двадесет и четири часа. Тази команда работи по този начин, защото времето от последното модифициране на всеки файл е разделено на 24 часа, а останалите се отхвърлят. Това означава, че да съвпадат-mtime 0, файлът ще трябва да има промяна в миналото, която е по-малко от 24 часа. намирам . -перпер 664
Търсете файлове, които имат разрешение за четене и писане за техния собственик и група, но кои други потребители могат да четат, но не пишат. Файловете, които отговарят на тези критерии, но имат други разрешени бита (например ако някой може да изпълни файла) няма да бъдат съпоставени. намирам . -пермон -664
Потърсете файлове, които имат разрешение за четене и писане за техния собственик и група, и кои други потребители могат да четат, без да се съобразява с наличието на каквито и да било допълнителни разрешителни битове (например изпълнимия бит). Това ще съвпадне с файл, който има например режим 0777. намирам . -пермон / 222
Търсете файлове, които могат да се пишат от някой (собственик или група или някой друг). намирам . -пермон / 220 намирам . -перм / u + w, g + w намирам . -перм / u = w, g = w
И трите от тези команди правят същото, но първата използва осмото представяне на файловия режим, а другите две използват символичната форма. Тези команди всички търсене на файлове, които могат да се пишат от собственика или групата им. Файловете не трябва да могат да се пишат както от собственика, така и от групата, която трябва да се съчетае; или ще го направя. намирам . -перм -220 намирам . -пермон -g + w, u + w
И двете тези команди правят същото; търсене на файлове, които могат да се пишат от собственика им и тяхната група. намирам . -пермон -444 -перм / 222! -перм / 111 намирам . -perm -a + r -перм / а + w! -перм / а + х
Тези две команди, както търсене на файлове, които могат да се четат за всички (-perm -444 или -perm -a + r), имат най-малко за написване на бита (-perm / 222 или -perm / a + w), но не са изпълними за всеки (! -перм / 111 и l-перм / а + х съответно) Важно: Използвай мъж команда ( % man ), за да видите как се използва команда на вашия компютър.Операторите
Примери




