GNU/Linux >> Znalost Linux >  >> Linux

Najděte soubory a adresáře v Linuxu snadno

Tento výukový program se zaměřuje na to, jak najít soubory v systému Linux pomocí příkazů find a locate.

Jako správce systému je velmi častým úkolem hledat konkrétní soubor v systému souborů .

Někdy však může být obtížné najít soubory v systému Linux souborový systém, zvláště pokud máte desítky různých uživatelů.

Existují dva příkazy, které vám mohou pomoci dosáhnout vašeho cíle:najít a najít.

V tomto tutoriálu se podíváme na to, jak tyto příkazy efektivně používat a jak je lze vyladit, abychom dosáhli toho, co hledáme.

Najít soubory pomocí příkazu Najít

První způsob, jak najít a najít soubory na hostiteli Linuxu, je použít příkaz find.

Ve výchozím nastavení je příkaz find dostupný ve všech distribucích a má následující syntaxi

$ find <options> <path> <expression>

Rychlý tip :máš nějaké potíže se zapamatováním, jestli je na prvním místě cesta nebo výraz?

Pamatujte, že pro grEP je E výraz P ath a find je opak, takže P ath E výraz!

Najít je docela výkonný příkaz, protože má mnohem více možností než příkaz locate.

Zde jsou všechny možnosti funkce find na Linuxu.

Najít soubory s hledáním podle názvu souboru

Nejběžnějším použitím funkce hledání je vyhledání souborů podle jejich názvů souborů .

$ find <path> -name <pattern>

Hlavní rozdíl mezi find a locate, pokud jde o vyhledávání souborů, je ten, že find bude hledat názvy souborů, zatímco locate bude hledat cesty k souboru.

Pokud se například vrátíme k příkladu úrovně běhu, který jsme použili dříve, zde je návod, jak vyhledat soubory úrovně běhu pomocí příkazu find.

$ find / -name runlevel*

Co je část „2> /dev/null“?

Přesměroval jsem chybový výstup do /dev/null pomocí přesměrování výstupu, abych se vyhnul chybovým zprávám na konzole.

Najít soubory pomocí hledání podle typu souboru

Jak jsme již dříve probrali v našem článku o pevných a měkkých odkazech, souborům jsou přiřazeny typy souborů a používá se to jako způsob, jak je rozlišit.

Zde je rekapitulace všech typů souborů používaných v Linuxu.

  • f :standardní soubor
  • d :složka nebo adresář
  • l :symbolický odkaz nebo měkký odkaz
  • b :blokování zařízení (jako je například pevný disk)
  • c :znaková zařízení (sériové porty, zvukové karty)
  • p :pojmenovaná roura
  • s :zásuvka

Když znáte všechny tyto typy souborů, můžete nyní vyhledávat soubory podle typu souboru pomocí příkazu find.

$ find <path> -type <filetype>

Pokud například hledáme všechnysymbolické odkazy na hostiteli bychom vydali následující příkaz.

$ find / -type l

Parametry lze kombinovat, například pokud hledám všechny symbolické odkazy, jejichž názvy souborů končí na „.service“ (například pro izolaci všech služeb systemd), spustil bych následující příkaz.

$ find / -type l -name *.service

Najděte soubory pomocí vzoru (pro přípony)

Podobně jako u příkazu locate můžete v Linuxu najít soubory pomocí vzoru.

Připomínáme, že vzor je řetězec, který obsahuje kulové znaky (například *, ? nebo rozsahy).

Tato možnost je zvláště vhodná, když se snažíte najít soubory s příponou, například soubory Javascript.

Chcete-li najít soubory v systému Linux pomocí vzoru, spusťte následující příkaz

$ find <path> -name ".<extension>"
$ find / -name "*.js"

Soubory souborů v systému Linux podle vlastníka

Někdy chcete izolovat soubory vytvořené určitým uživatelem .

Při mazání uživatele na vašem hostiteli můžete chtít odstranit například všechny soubory spojené s tímto uživatelem.

Někdy uživatelé vytvářejí soubory ze svého domovského adresáře a smazání domovského adresáře uživatele samo o sobě nestačí.

V důsledku toho, chcete-li najít soubory vytvořené určitým uživatelem v Linuxu, spusťte následující příkaz

$ find <path> -user <user>

Například, abych na svém hostiteli našel všechny soubory vlastněné „john“, spustil bych následující příkaz.

$ find / -user john

Co když teď chci smazat všechny soubory vlastněné Johnem jednoduchým příkazem?

Toho lze snadno dosáhnout pomocí příznaku odstranění.

$ find / -user john -delete

Vyhledání souborů v systému Linux podle oprávnění

Pomocí příkazu find můžete také najít a najít soubory, které mají určitá oprávnění na vašem hostiteli.

$ find <path> -perm <permissions>

Připomínáme, jak fungují oprávnění k souborům v systému Linux.

Chcete-li najít všechny soubory, které mají plná oprávnění (777 vzhledem k binárnímu zápisu), můžete spustit následující příkaz.

$ find / -perm 777

Může to být docela užitečné, pokud z bezpečnostních důvodů chcete zkontrolovat, zda ve vašem systému nejsou nakonfigurovány žádné soubory s plnými oprávněními.

Najít soubory pomocí funkce Najít podle velikosti

Dalším velmi praktickým způsobem, jak najít a najít soubory v Linuxu, je najít příkaz find s možností velikosti.

Možnost velikosti vám umožňuje vyhledávat soubory, které mají přesně zadanou velikost, větší než konkrétní velikost nebo menší než konkrétní velikost.

Chcete-li vyhledat soubory podle velikosti, použijte následující příkaz

$ find <path> -size <size>

Velikost je definována následujícími předponami :

  • c :bajtů
  • b :512bajtové bloky
  • k :kilobajty
  • M :Megabajty
  • G :Gigabajty

Pokud hledáte soubory větší než zadaná velikost, můžete zadat „+“.

Chcete-li například v systému najít soubory větší než 1 GB, spusťte následující příkaz

$ find / -size +1G

K vyhledání souborů menší než 10 MB v systému , spusťte následující příkaz

$ find / -size -10M

A konečně k vyhledání souborů, které jsou přesně velikost zadaná v dotazu, neměli byste k příkazu připojovat žádné plus nebo mínus předpony.

$ find / -size 1024k

Právě definovaný příkaz najde na vašem hostiteli všechny soubory, které mají přesně 1024 kb.

Najít soubory v systému Linux podle data úpravy

Pomocí funkce Najít můžete také najít soubory s datem úpravy, ať už nedávné nebo ne.

Tento příkaz je velmi praktický a správci systému jej často používají k vyhledání souborů nebo adresářů, které byly nedávno změněny.

Chcete-li vyhledat soubory pomocí funkce Najít podle data úpravy, spusťte následující příkaz

$ find <path> -mtime <time>

Kde čas představuje soubory upravené před 24* .

V důsledku toho je čas vyjádřen ve dnech.

Podobně jako u možnosti velikosti můžete připojit „plus “ nebo „mínus ” na čas, který má vyhledat soubory upravené před více než

Například hledat soubory upravené přesně před 3 hodinami , spustíte následující příkaz.

$ find / -mtime 3

Chcete-li najít soubory upravené před více než týdnem , spustíte následující příkaz

$ find / -mtime +7

Chcete-li najít soubory upravené před méně než dvěma dny , spustíte následující příkaz

$ find / -mtime -2

Najděte soubory s dynamickou hloubkou

Jak jste si pravděpodobně všimli, od začátku tohoto tutoriálu uvádíme příklady hledání souborů počínaje kořenovým adresářem.

V důsledku toho se všechny složky procházejí rekurzivně.

Můžeme však omezit počet adresářů rekurzivně procházejících z jednoho adresáře, tomu se říká hloubka.

Omezení prohledávání souborů na danou hloubku , spusťte následující dotaz

$ find <path> -maxdepth <depth>

Zde je příklad, jak můžete omezit vyhledávání souborů na aktuální adresář, aniž by se procházely žádné podřízené adresáře.

$ find / -maxdepth 1

Tento příkaz můžete samozřejmě zkombinovat s příznakem názvu, abyste mohli hledat soubory s daným názvem v aktuálním adresáři.

$ find . -maxdepth 1 -name *.tar

Zřetězení hledání pomocí -exec

V některých případech může být užitečné zřetězit příkaz find s příkazem exec.

Možnost exec lze použít k řetězení více příkazů dohromady:přičemž výsledek prvního příkazu se použije jako vstup druhého.

Řekněme například, že chcete najít všechny soubory upravené před méně než jednou minutou

$ find /home/user -mmin -1
./file1

Nyní řekněme, že chcete smazat všechny soubory, které byly upraveny před méně než jednou minutou.

Pomocí této syntaxe můžete zřetězit příkaz find s volbou -exec.

$ find /home/user -mmin -1 -exec echo rm -f '{}' \;

Výsledky samozřejmě nejprve „ozveme“, protože se chceme ujistit, že mažeme správné soubory.

Až budete připraveni tyto soubory odstranit, jednoduše odstraňte příkaz echo.

$ find /home/user -mmin -1 -exec rm -f '{}' \;

Najděte soubory v systému Linux pomocí příkazu Locate

Dalším skvělým způsobem, jak najít a najít soubory v Linuxu, je použít locate příkaz.

Předpoklady

Pokud příkaz locate není ve vašem systému dostupný, přečtěte si další část, abyste mohli spustit locate ve vašem systému.

a – Instalace Locate na distribucích založených na APT a RPM

Chcete-li nainstalovat najděte , budete na svém hostiteli Linuxu potřebovat oprávnění sudo.

Chcete-li zkontrolovat, zda je na vašem hostiteli nainstalováno locate, spusťte příkaz locate v příkazovém řádku.

$ locate

Pokud je na vašem počítači nainstalováno locate, bude očekávat výraz poskytnut

Pokud locate není na vašem hostiteli nainstalováno, zobrazí se chybová zpráva

Chcete-li nainstalovat locate na Ubuntu 18.04 a Debian 10, spusťte následující příkaz.

$ sudo apt-get install mlocate

Podobně, pokud používáte distribuci CentOS nebo Fedora, spusťte následující příkaz pro instalaci locate.

$ sudo yum install mlocate

b – Aktualizace vaší databáze mlocate

místo Funkce pracuje s lokální databází uloženou ve vašem souborovém systému, která ukládá každý jednotlivý soubor vašeho hostitele.

Při provádění příkazu locate vyhledá locate v databázi připravené updatedb pro soubor, který hledáte.

Pravidelně úloha cron aktualizuje mlocate.db můžete vyhledat nejnovější záznamy.

Databáze se nachází na adrese /var/lib/mlocate/mlocate.db ve výchozím nastavení a konfigurační soubor updatedb je uložen v /etc/updatedb.conf .

Prozatím můžete ponechat výchozí možnosti a spustit jednoduchý příkaz updatedb, aby se databáze obnovila.

$ sudo updatedb

Vyhledejte soubory podle vzoru názvu

Nejzákladnějším způsobem, jak najít soubory v systému Linux, je poskytnout vzor příkazu locate .

Ve výchozím nastavení je syntaxe příkazu locate následující

$ locate [OPTION]... [PATTERN]...

Pokud hledáte daný konfigurační soubor ve vašem systému, snadným způsobem, jak jej najít, je poskytnout jeho úplný název souboru příkazu locate.

$ locate updatedb.conf

Jak můžete vidět, příkaz locate vrací úplné cesty k souboru, který hledám.

Vyhledejte soubory v omezených adresářích

Někdy nemusíte mít přístup k některým adresářům ve vašem systému.

V důsledku toho nebudete moci najít soubory, které se v něm nacházejí.

Vezměme si příklad zakázané složky obsahující soubor s názvem „restricted-file “.

Chcete-li vyhledat soubory umístěné v omezených adresářích, musíte spustit příkaz locate s právy sudo.

$ sudo locate restricted-file

Vyhledejte soubory pomocí vzoru

Pomocí příkazu locate můžete zadat „vzory“ ve formě kulových znaků .

Globující znaky , také nazývané zástupné znaky, jsou znaky používané ke spárování jednoho nebo více záznamů se zjednodušeným výrazem.

Nejoblíbenější je „* ” který bude odpovídat libovolnému znaku včetně žádného.

Zde je rekapitulační tabulka pro globující postavy a jejich funkce.

Zástupný znak Popis Příklad Zápasy Neodpovídá
* odpovídá jakémukoli počtu libovolných znaků včetně žádné devco* devconnected, devcoco, devco.com devdevco,
[abc] odpovídá jednomu znaku uvedenému v závorce [ab]ab aab, bab cab
[a-z] odpovídá jednomu znaku z rozsahu (závislého na národním prostředí) uvedeného v závorce runlevel[0-9] runlevel1, runlevel2, runlevel6 runlevels, runlevelo

Zde je příklad, jak najít všechny textové soubory ve vašem systému.

$ locate *.txt

Vyhledejte soubory pomocí regulárního výrazu

Jak je uvedeno v oficiální manuálové stránce pro locate, příkaz locate přijímá vzor jako vstup.

Znamená to, že příkazu locate můžete poskytnout regulární výraz.

Chcete-li najít a najít soubory s regulárním výrazem, použijte –regulární výraz volba pro příkaz locate.

$ locate --regex <regex>

Chcete-li například izolovat všechny soubory začínající úrovní běhu následovanou číslem, spustili byste následující příkaz.

$ locate --regex runlevel[0-9]+

Při používání regulárních výrazů existuje jeden důležitý bod, kterého byste si měli být vědomi při hledání souborů.

Příkaz locate hledá cesty k souborům ve své lokální databázi.

V důsledku toho byste si při vyhledávání souborů měli být vědomi toho, že váš regulární výraz musí odpovídat cestě k souboru a nikoli pouze názvu souboru.

Pokud například hledám soubory začínající na „run“, žádné výsledky se nevrátí, protože cesta k souboru začíná „/usr“.

Vyhledejte soubory pomocí možnosti nerozlišovat malá a velká písmena

Při hledání souborů ve vašem souborovém systému si možná nejste jisti, jak byl daný soubor pojmenován.

Bylo to psáno velkými nebo malými písmeny? Obsahuje vůbec nějaká velká písmena?

Chcete-li najít a najít soubory pomocí volby nerozlišující malá a velká písmena, přidejte do příkazu locate volbu -i.

$ locate -i <file_pattern>

Vyhledávejte soubory podle obsahu pomocí grep

V některých případech vás může zajímat vyhledávání souborů, které odpovídají konkrétnímu slovu věty, která se nachází UVNITŘ souboru.

To se může stát například tehdy, když se snažíte najít soubor obsahující konkrétní události protokolu.

První způsob, jak vyhledat soubory odpovídající konkrétnímu slovu, je pomocí příkazu grep

$ grep -r <pattern> <path>

Poznámka :nezapomeňte na volbu „-r“, pokud prohledáváte soubory v celých adresářích.

Například. pokud prohledáváte všechny soubory, které mají ve svém obsahu „chybu“, a které se nacházejí ve vašem domovském adresáři, zadejte

$ grep -r error /home/user

V některých případech můžete chtít najít soubory s regulárním výrazem.

Chcete-li najít soubory pomocí regulárního výrazu, použijte volbu „-E“.

$ grep -r -E <expression> <path>

Řekněme například, že chcete v jednom ze svých souborů najít soubor odpovídající vzoru „abc“, napište

$ grep -r -E "abc.*" --color /home/user

Poznámka :volba barvy se používá ke zvýraznění shod pomocí příkazu grep.

Najít soubory pomocí kterého

Dalším skvělým způsobem, jak najít soubory v Linuxu, je použít příkaz which.

Příkaz which se používá k vyhledání souborů spojených s konkrétním příkazem.

To může být velmi užitečné, když nevíte, kam jste uložili své binární soubory pro příkaz, nebo pokud potřebujete příkaz najít, abyste jej mohli přidat do své PATH.

$ which <command>

Chcete-li například vyhledat soubory spojené s příkazem „ls“, zadejte

$ which ls
/usr/bin/ls

Jak vidíte, dostanete úplnou cestu k souboru.

Vyhledejte binární soubory pomocí whereis

Podobně je zcela možné vyhledávat soubory pomocí příkazu whereis.

Příkaz „whereis“ lze považovat za nadmnožinu příkazu „what“:„whereis“ poskytuje informace o názvu příkazu, umístění souboru a také o umístění manuálových stránek.

Chcete-li spustit whereis, jednoduše napište „whereis“ a připojte název vašeho příkazu.

$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

Docela šikovný!

Závěr

V dnešním tutoriálu jste se naučili, jak můžete najít a lokalizovat soubory v Linuxu pomocí dvou důležitých příkazů:locate and find.

I když byly možnosti prezentovány jednotlivě, měli byste mít na paměti, že je lze kombinovat, abyste mohli ještě více specifikovat soubory, které hledáte.

Jako vždy, pokud máte zájem o administraci systému Linux, máme na našem webu kompletní sekci věnovanou Linuxu.


Linux
  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Najděte největší soubory a adresáře v Linuxu

  3. Linux – standardní a/nebo společné adresáře na operačních systémech Unix/linux?

  1. Příkazy hledání pro Linux

  2. Linux Odstraňte soubory a adresáře

  3. Jak najít a odstranit prázdné adresáře a soubory v Linuxu

  1. Jak zjistit nejlepší adresáře a soubory (místo na disku) v Linuxu

  2. Najděte soubory a adresáře v Linuxu jako profík

  3. Najděte a zkopírujte soubory