Skip to main content

Използване на Linux и Unix команда намерите

Statistical Programming with R by Connor Harris (Юни 2026)

Statistical Programming with R by Connor Harris (Юни 2026)
Anonim

Командата 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", не изпълнявайте командата и връщайте фалшива.

-print

Вярно; отпечатайте пълното име на файла на стандартния изход, последван от нов ред.

-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 ), за да видите как се използва команда на вашия компютър.