Příkazy Linux a Unix nalézt provede vyhledávání souborů v hierarchii adresářů.
Syntaxe pro nalézt příkaz:
najít cesta … výraz
Popis
Tato manuálová stránka dokumentuje verzi GNU nalézt . Příkaz nalézt vyhledává adresářový strom zakořeněný u každého daného názvu souboru vyhodnocením daného výrazu zleva doprava podle pravidel přednosti (viz část Operátory níže), dokud není znám výsledek; jinými slovy, levá strana je falešná a operace, pravda pro nebo , na kterém místě nalézt přesune na další název souboru.
První argument, který začíná:
- -
- ( nebo),
- !
je považován za začátek výrazu; všechny argumenty před tím, než jsou cesty k vyhledávání, a všechny argumenty po něm jsou zbytek výrazu. Pokud nejsou zadány žádné cesty, použije se aktuální adresář. Pokud není uveden žádný výraz, výraz -vytisknout se používá.
The nalézt příkazem ukončí stav 0, pokud jsou všechny soubory úspěšně zpracovány, větší než 0, pokud dojde k chybě.
Výrazy
Výraz je tvořen možnostmi (které ovlivňují celkovou operaci spíše než zpracování konkrétního souboru a vždy vrátí true), testy (které vracejí hodnotu true nebo false) a akce (které mají vedlejší účinky a vrátí pravdivý nebo falešná hodnota), všechny oddělené operátory. Výraz -a předpokládá se, že obsluha je vynechána. Pokud výraz neobsahuje žádné jiné akce než -prořezávat , pak -vytisknout se provádí na všech souborech, pro které je výraz true.
Možnosti
Všechny možnosti se vždy vrátí na hodnotu true. Vždy se projevují, spíše než se zpracovávají pouze tehdy, když dosáhnou svého místa ve výrazu. Z důvodu jasnosti je proto nejlepší umístit je na začátku výrazu.
| -daystart | Čas měření (pro -amin, -atime, -cmin, -time, -mmin, a -mtime ) od začátku dneška spíše než před 24 hodinami. |
| -hloubka | Zpracujte obsah každého adresáře před samotným adresářem. |
| -následovat | Dereference symbolické odkazy. Implicuje -Noleaf . |
| -Pomoc nebo --Pomoc | Vytiskněte souhrn příkazového řádku nalézt a výstupu. |
| -maxdepth číslo | Snižte počet nejvyšších úrovní (ne záporné celé číslo) adresářů pod parametry příkazového řádku. Výraz -maxdepth 0 znamená použít testy a akce pouze na argumenty příkazového řádku. |
| -mindepth počet | Nepoužívejte žádné testy nebo akce na úrovni nižší než je počet (ne záporné celé číslo). Výraz -mindepta 1 znamená zpracování všech souborů s výjimkou argumentů příkazového řádku. |
| -mount | Necházejte adresáře v jiných souborových systémech. Alternativní jméno pro -xdev , pro kompatibilitu s některými dalšími verzemi nalézt . |
| -Noleaf | Nepoužívejte optimalizaci, pokud předpokládáte, že adresáře obsahují méně podadresářů než jejich pevný počet odkazů. * |
| -verze nebo --verze | Vytiskněte nalézt číslo verze a výstup. |
| -xdev | Necházejte adresáře v jiných souborových systémech. |
* Tato volba je potřebná při hledání souborových systémů, které nesplňují konvenci Unix adresář-link, jako jsou souborové systémy CD-ROM nebo MS-DOS nebo body připojení AFS. Každý adresář v normálním Unixovém souborovém systému má alespoň 2 pevné odkazy: jeho jméno a jeho. (období). Kromě toho mají své podadresáře (pokud existují). záznam spojený s tímto adresářem.
Když nalézt zkoumá adresář poté, co napsal dva méně podadresářů než počet odkazů v adresáři, ví, že ostatní položky v adresáři jsou ne-adresáře ( list soubory ve stromu adresářů). Pokud je třeba prozkoumat pouze názvy souborů, není třeba je ukládat; což vede k výraznému zvýšení rychlosti vyhledávání.
Testy
Číselné argumenty lze zadat jako:
| + n | Pro větší než n. |
| -n | Za méně než n. |
| n | Přesně tak n. |
| amin | Soubor byl naposledy zpřístupněn n minutu před. |
| -anwer soubor | Soubor byl naposledy přístupný naposledy než soubor byl upraven. -anastavení je ovlivněno -sledovat pouze v případě, že -přijde-předchází -anwer na příkazovém řádku. |
| -atime n | Soubor byl naposledy zpřístupněn n * Před 24 hodinami. |
| -cmin n | Stav souboru byl naposledy změněn n minutu před. |
| -cnewer soubor | Stav souboru byl naposledy změněn později, než byl soubor změněn.- cnewer je ovlivněn -následovat jen když -následovat přijde předtím -cnewer na příkazovém řádku. |
| -čas n | Stav souboru byl naposledy změněn n * Před 24 hodinami. |
| -prázdný | Soubor je prázdný a je buď běžným souborem nebo adresářem. |
| -Nepravdivé | Vždy nepravdivé. |
| -fstype typ | Soubor je na souborovém systému zadaného typu. Platné typy souborových systémů se liší mezi různými verzemi systému Unix; neúplný seznam typů souborových systémů, které jsou přijaty u některé verze systému Unix nebo jiné, je: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Můžete použít -printf s direktivou% F pro zobrazení typů vašich souborových systémů. |
| -gid n | ID číselné skupiny souboru je n . |
| -group gname | Soubor patří do skupiny gname (povolená číselná skupina). |
| -ilname vzor | Stejně jako -iname, ale zápas není citlivý na velikost písmen. |
| -iname vzor | Jako -název , ale zápas není citlivý na velikost písmen. Například vzory pro * a F?? odpovídající názvy souborů Foo , FOO , foo , fOo , atd. |
| -inum n | Soubor má inode číslo n . |
| -path vzor | Jako -cesta , ale zápas není citlivý na velikost písmen. |
| -regex vzor | Stejně jako -regex, ale zápas není citlivý na velikost písmen. |
| -links n | Soubor má n Odkazy. |
| -informujte vzor | Soubor je symbolický odkaz, jehož obsah odpovídá vzoru obalu. Metacharactery se neléčí / nebo . speciálně. |
| -mmin n | Údaje souboru byly naposledy změněny n minutu před. |
| -mtime n | Údaje souboru byly naposledy změněny n * Před 24 hodinami. |
| -name vzor | Základ názvu souboru (cesta s hlavními odstraněnými adresáři) odpovídá vzoru obálky. Metacharaktery (*, ?, a ) neodpovídají a . na začátku názvu základny. Chcete-li ignorovat adresář a soubory pod ním, použijte -prořezávat ; viz příklad v popisu -cesta . |
| -newer soubor | Soubor byl později změněn soubor . Výraz -newer je ovlivněn -následovat jen když -následovat přijde předtím -newer na příkazovém řádku. |
| -nouser | Žádný uživatel neodpovídá numerickému ID uživatele. |
| -group | Žádná skupina neodpovídá ID číselné skupiny souboru. |
| -path vzor | Název souboru odpovídá typu shellu vzor . Metacharactery se neléčí / nebo . speciálně; tak, například,najít. -path "./sr*sc vytiskne položku pro adresář nazvaný ./src/misc (pokud existuje). Chcete-li ignorovat celý adresářový strom, použijte -prořezávat spíše než kontrolovat každý soubor ve stromu. Chcete-li například přeskočit adresář src / emacs a všechny soubory a adresáře pod ním a vytisknout jména ostatních nalezených souborů, proveďte něco podobného:najít. -path './src/emacs' -prune -o -print |
| -perm režim | Soubory oprávnění souboru jsou přesně režim (osmičkový nebo symbolický). Symbolické režimy používají režim 0 jako výchozí bod. |
| -perm -mode | Všechny povolené bity režim jsou nastaveny pro soubor. |
| -perm + režim | Některé z oprávnění bity režim jsou nastaveny pro soubor. |
| -regex vzor | Název souboru odpovídá regulárnímu výrazu vzor . Toto je shoda na celé cestě, nikoli hledání. Chcete-li například odpovídat souboru s názvem ./fubar3, můžete použít regulární výraz .*bar. nebo . * b. * 3, ale ne b. * r3. |
| -size n bckw | Soubor používá n jednotek prostoru. Jednotky jsou ve výchozím nastavení 512bajtových bloků nebo pokud je b následováno n , bajty, pokud následuje c n , kilobajty, jestliže následuje k n , nebo 2-byte slova, pokud w následuje n . Velikost nezahrnuje nepřímé bloky, ale počítají bloky v řídkých souborech, které nejsou skutečně přiděleny. |
| -skutečný | Vždy pravda. |
| -typ c | Soubor je typu C : |
| b | Blokové (vyrovnávací) speciální |
| C | Zvláštní znak (nebuštěný) |
| d | Adresář |
| str | Pojmenovaná trubka (FIFO) |
| F | Pravidelný soubor |
| l | Symbolický odkaz |
| s | Zásuvka |
| D | dveře (Solaris) |
| -uid n | Číselné ID uživatele souboru je n . |
| -used n | Soubor byl naposledy zpřístupněn n dnů po změně posledního stavu. |
| -user uname | Soubor je vlastněn uživatelem uname (je povoleno číselné uživatelské jméno). |
| -xtype c | Stejný jako -typ pokud je soubor symbolickým odkazem. Pro symbolické odkazy: pokud -následovat nebyl daný, pokud soubor je odkaz na soubor typu C ; -li -následovat bylo dáno, pravda, pokud C je l. Jinými slovy, pro symbolická spojení, -xtype zkontroluje typ souboru -typ nekontroluje. |
Akce
-exec příkaz ;
Vykonat příkaz ; pokud je vrácena stav 0. Všechny následující argumentynalézt jsou považovány za argumenty příkazu, dokud argument obsahující ";" se setkáváme. Řetězec `{} 'se nahradí aktuálním názvem souboru, který se zpracovává všude tam, kde se objevuje v argumentu příkazu, a to nejen v argumentech, kde je sám, jako v některých verzíchnalézt. Obě tyto konstrukce možná budou muset uniknout (pomocí ` ') nebo citované, aby je ochránily před expanzí ze skořápky. Příkaz je spuštěn v počátečním adresáři.
-fls soubor
Skutečný; jako -l, ale psát soubor jako -fprint.
-fprint soubor
Skutečný; vytiskněte celý soubor do souboru soubor . Li soubor neexistuje, kdyžnalézt je spuštěn, je vytvořen; pokud existuje, je zkrácena. Názvy souborů `` / dev / stdout '' a `` dev / stderr '' jsou zpracovány speciálně; vztahují se na standardní výstup a standardní výstupní chybu.
-fprint0 soubor
Skutečný; jako -print0, ale psát soubor jako -fprint.
-fprintf soubor formát
Skutečný; jako -printf, ale psát soubor jako -fprint.
-OK příkaz ;
Jako -exec, ale nejprve se zeptat uživatele (na standardním vstupu); pokud odpověď nezačíná písmenem "y" nebo "Y", příkaz nespusťte a nevráťte falešně.
-vytisknout
Skutečný; vytisknout úplný název souboru na standardním výstupu a následovat nový řádek.
-print0
Skutečný; vytisknout úplný název souboru na standardní výstup, následovaný nulovým znakem.To umožňuje, aby názvy souborů, které obsahují nové řádky, byly správně interpretovány programy, které zpracovávajínalézt výstup.
-printf formát
Skutečný; vytisknout formát na standardním výstupu, interpretace direktiv "escapes" a "%". Šířka a přesnost pole lze zadat jako u funkce "printf" C. Na rozdíl od -tisk, -printf nepřidá nový řádek na konci řetězce. Úniky a směrnice jsou:
A
Zvonkový zvon.
b
Backspace.
C
Zastavte okamžitý tisk z tohoto formátu a vypusťte výstup.
F
Form feed.
n
Nový řádek.
r
Návrat k přepravě.
t
Horizontální karta.
proti
Záložka Vertikální.
\
Doslovné lomítko (` ').
NNN
Postava, jejíž kód ASCII je NNN (osmičkový).
Znak "` ", po kterém následuje jakýkoli jiný znak, je považován za obyčejný znak, takže jsou oba vytištěny.
%%
Doslovný procentní znak.
%A
Soubor posledního času přístupu ve formátu vráceného funkcí C `ctime.
%A k
Soubor posledního času přístupu ve formátu určeném uživatelem k , což je buď `@ 'nebo směrnice pro funkci C` strftime'. Možné hodnoty pro k jsou uvedeny níže; některé z nich nemusí být k dispozici ve všech systémech kvůli rozdílům v "strftime" mezi systémy.
@
sekundy od 1. ledna 1970, 00:00 GMT.
Časová pole:
H
hodina (00..23)
I
hodina (01..12)
k
hodin (0..23)
l
hodina (1..12)
M
minutu (00..59)
str
místního úřadu AM nebo PM
r
čas, 12 hodin (hh: mm: ss AP M)
S
druhý (00..61)
T
čas, 24 hodin (hh: mm: ss)
X
lokální reprezentace času (H: M: S)
Z
časové pásmo (např. EDT), nebo nic, pokud není určeno žádné časové pásmo
Políčka Datum:
A
místní název zkráceného dne v týdnu (Sun..Sat)
A
místní jméno celé dne v týdnu, proměnná délka (neděle, srpen)
b
místní název zkráceného měsíce (Jan..Dec)
B
místní název celého měsíce, variabilní délka (leden, prosinec)
C
datum a čas místního sídla (So 04.11 12:02:33 EST 1989)
d
den v měsíci (01..31)
D
datum (mm / dd / rr)
h
stejně jako b
j
den roku (001..366)
m
měsíc (01..12)
U
týdenní číslo roku s nedělí jako prvním dnem týdne (00..53)
w
den v týdnu (0..6)
W
týdenní číslo roku s pondělí jako prvním dnem týdne (00..53)
X
reprezentace data lokalizace (mm / dd / rr)
y
poslední dvě číslice roku (00..99)
Y
rok (1970 …)
% b
Velikost souboru v bloku 512 bajtů (zaokrouhleno nahoru).
%C
Poslední změna stavu souboru ve formátu vráceného funkcí C `ctime.
%C k
Poslední změna stavu souboru ve formátu určeném uživatelem k , což je stejné jako u% A.
% d
Hloubka souboru ve stromovém adresáři; 0 znamená, že soubor je argument příkazového řádku.
%F
Název souboru s odstraněnými vedoucími adresáři (pouze poslední prvek).
%F
Typ souborového systému, ve kterém je soubor zapnutý; tato hodnota může být použita pro -ftype.
%G
Název skupiny souboru nebo ID skupiny čísel, pokud skupina nemá žádné jméno.
%G
ID číselné skupiny souboru.
% h
Vedoucí adresáře názvu souboru (všechny kromě posledního prvku).
% H
Argument příkazového řádku, pod kterým byl nalezen soubor.
% i
Inode číslo souboru (v desítkovém souboru).
% k
Velikost souboru v bloku 1K (zaokrouhleno nahoru).
% l
Objekt symbolického odkazu (prázdný řetězec, pokud soubor není symbolický odkaz).
% m
Soubory oprávnění souboru (v osmičce).
% n
Počet pevných odkazů na soubor.
% p
Jméno souboru.
% P
Jméno souboru s názvem argumentu příkazového řádku, pod kterým byl nalezen odstraněn.
% s
Velikost souboru v bajtech.
% t
Poslední změna času souboru ve formátu vráceného funkcí C `ctime '.
% T k
Poslední změna souboru ve formátu určeném uživatelem k , což je stejné jako u% A.
% u
Uživatelské jméno souboru nebo číselné uživatelské ID, pokud uživatel nemá žádné jméno.
% U
Numerické uživatelské ID souboru.
Znak "%", po kterém následuje jakýkoli jiný znak, je vyřazen (ale je vytištěn druhý znak).
-prořezávat
Pokud -depth není dána, pravda; neklesněte do aktuálního adresáře.Je-li dáno, je falešné; žádný efekt. -ls Skutečný; seznam aktuálního souboru ve formátu `ls -dils 'na standardním výstupu. Počty bloků jsou bloky 1K, pokud není nastavena proměnná prostředí POSIXLY_CORRECT, v takovém případě jsou použity bloky o velikosti 512 bajtů. Uvedené v pořadí podle klesající priority: ( expr ) Přednost síly. ! expr Je pravda, jestli expr je falešná. -ne expr Stejný jako ! expr . expr1 expr2 A (implicitní); expr2 není vyhodnoceno, zda expr1 je falešná. expr1 -A expr2 Stejný jako expr1 expr2 . expr1 -a expr2 Stejný jako expr1 expr2 . expr1 -Ó expr2 Nebo; expr2 není vyhodnoceno, zda expr1 je pravda. expr1 -nebo expr2 Stejný jako expr1 -Ó expr2 . expr1 , expr2 Seznam; oba expr1 a expr2 jsou vždy vyhodnocovány. Hodnota expr1 je vyřazen; hodnota seznamu je hodnota expr2 . najít / home -user joe
Najděte všechny soubory pod adresářem / domovem, které vlastní uživatel Joe. find / usr -name * stat
Najděte každý soubor pod adresářem / usr končit v ".stat". najít / var / spool -mtime +60
Najděte každý soubor pod adresářem / var / spool, který byl upraven před více než 60 dny. find / tmp -name core -type f -print | xargs / bin / rm -f
Najděte pojmenované souboryjádro v adresáři nebo pod ním/ tmp a odstranit je.Všimněte si, že to bude fungovat nesprávně, pokud existují názvy souborů obsahujících nové řádky, jednoduché nebo dvojité uvozovky nebo mezery. find / tmp -name jádro -type f -print0 | xargs -0 / bin / rm -f
Najděte pojmenované souboryjádro v adresáři nebo pod ním/ tmp a jejich odstranění, zpracování názvů souborů takovým způsobem, že názvy souborů nebo adresářů obsahující jednoduché nebo dvojité uvozovky, mezery nebo nové řádky jsou správně zpracovány. The-název test přichází před-typ test, aby nedošlo k volánístat (2) na každém souboru. najít. -typ f -exec soubor '{}' ;
Spustí `soubor 'v každém souboru v nebo pod aktuálním adresářem. Všimněte si, že závorky jsou uzavřeny v jednoduchých uvozovkách, které je chrání před interpretací jako interpunkce skriptů. Bodkoćka je podobnę chráněna poużitím zpętného lomítka, aćkoli ";" mohla být v tomto případě použita. find / (-perm -4000 -fprintf /root/suid.txt '% # m% u% p n' ), (-size + 100M -fprintf /root/big.txt '% -10s% p n' )
Projděte souborový systém jen jednou, seznamem souborů a adresářů setuid/root/suid.txt a velké soubory do/root/big.txt. najít $ HOME -time 0
Vyhledejte soubory ve vašem domovském adresáři, které byly upraveny za posledních 24 hodin. Tento příkaz funguje tímto způsobem, protože čas od posledního modifikace souboru je rozdělen do 24 hodin a veškerý zbytek je vyřazen. To znamená, že se to hodí-mtime 0, soubor bude muset mít v minulosti úpravu, která je kratší než 24 hodin. najít. -perm 664
Vyhledejte soubory, které mají oprávnění ke čtení a zápis pro vlastníka a skupinu, ale které ostatní uživatelé mohou číst, ale nepsat. Soubory, které splňují tato kritéria, ale mají nastavené další bity oprávnění (například pokud někdo může spustit soubor), nebudou odpovídat. najít. -perm -664
Vyhledejte soubory, které mají oprávnění ke čtení a zápis pro vlastníka a skupinu a které další uživatelé mohou číst, bez ohledu na přítomnost libovolných bitů pro další povolení (například spustitelný bit). To bude odpovídat souboru, který má například režim 0777. najít. -perm / 222
Vyhledejte soubory, které lze zapisovat někým (jejich majitel, nebo jejich skupina nebo někdo jiný). najít. -perm / 220 najít. -perm / u + w, g + w najít. -perm / u = w, g = w
Všechny tři příkazy dělají totéž, ale první používá osmičkovou reprezentaci režimu souborů a další dva používají symbolický formulář. Tyto příkazy vyhledávají všechny soubory, které lze zapsat buď vlastním nebo jejich skupinou. Soubory nemusí být zapisovatelné jak vlastníkem, tak skupinou, která má být přiřazena. buď to udělá. najít. -perm -220 najít. -perma -g + w, u + w
Oba tyto příkazy dělají totéž; hledání souborů, které jsou zapisovatelné jak jejich majitelem, tak i jejich skupinou. najít. -perm -444 -perm / 222! -perm / 111 najít. -perma -a + r -perm / a + w! -perm / a + x
Tyto dva příkazy vyhledávají soubory, které jsou čitelné pro všechny (-perm -444 nebo -perm -a + r), mají alespoň nastavený bit pro zápis (-perm / 222 nebo -perm / a + w), ale nejsou spustitelné pro někoho (! -perm / 111 a / -perm / a + x) Důležité: Použijte muž příkaz ( % muž ), abyste zjistili, jak je v daném počítači použit příkaz.Operátoři
Příklady




