GNU/Linux >> Znalost Linux >  >> Linux

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

Bez ohledu na to, jak organizovaný se rozhodnu být, zdá se, že vždy nastanou situace, kdy prostě nemohu najít soubor. Někdy je to proto, že si na prvním místě nemohu vzpomenout na název souboru. Jindy to jméno znám, ale nemůžu si vzpomenout, kde jsem se rozhodl to uložit. Jsou dokonce chvíle, kdy potřebuji soubor, který jsem původně nevytvořil. Bez ohledu na to, o co jde, vím, že na systému POSIX mám vždy find příkaz.

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

Instalace find

find příkaz je definován specifikací POSIX, která vytváří otevřený standard, kterým se měří systémy POSIX (včetně Linuxu, BSD a macOS). Jednoduše řečeno, find již máte nainstalován, pokud používáte Linux, BSD nebo macOS.

Ne všechny však find příkazy jsou úplně stejné. GNU find Například příkaz má vlastnosti, které find BSD nebo Busybox nebo Solaris příkaz nemusí mít nebo má, ale implementuje se jinak. Tento článek používá GNU find z balíčku findutils, protože je snadno dostupný a velmi oblíbený. Většina příkazů demonstrovaných v tomto článku funguje s jinými implementacemi find , ale pokud byste zkusili příkaz na jiné platformě než Linux a získali byste neočekávané výsledky, zkuste si stáhnout a nainstalovat verzi GNU.

Najděte soubor podle názvu

Soubor můžete vyhledat podle názvu souboru zadáním celého názvu souboru nebo částí názvu souboru pomocí regulárních výrazů. find příkaz vyžaduje cestu k adresáři, ve kterém chcete prohledávat, možnosti k určení, jaký atribut hledáte (například -name pro název souboru rozlišující malá a velká písmena) a poté hledaný řetězec. Ve výchozím nastavení se s vyhledávacím řetězcem zachází doslovně:find příkaz hledá název souboru, který je přesně ten řetězec, který zadáte mezi uvozovky, pokud nepoužijete syntaxi regulárního výrazu.

Předpokládejme, že váš adresář Documents obsahuje čtyři soubory:Foo , foo , foobar.txt a foo.xml . Zde je doslovné hledání souboru s názvem "foo":

$ find ~ -name "foo"
/home/tux/Documents/examples/foo

Vyhledávání můžete rozšířit tak, že pomocí -iname nerozlišujete malá a velká písmena možnost:

$ find ~ -iname "foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo

Zástupné znaky

K rozšíření vyhledávání můžete použít základní zástupné znaky shellu. Například hvězdička (* ) představuje libovolný počet znaků:

$ find ~ -iname "foo*"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents /examples/foo.xml
/home/tux/Documents/examples/foobar.txt

Otazník (? ) představuje jeden znak:

$ find ~ -iname "foo*.???"
/home/tux/Documents/examples/foo.xml
/home/tux/Documents/examples/foobar.txt

Toto není syntaxe regulárního výrazu, takže tečka (. ) v tomto příkladu představuje doslovnou tečku.

Regulární výrazy

Můžete také použít regulární výrazy. Stejně jako u -iname a -name , existuje možnost rozlišovat malá a velká písmena a nerozlišovat malá a velká písmena. Na rozdíl od -name a -iname možnosti, ale -regex a -iregex vyhledávání se použije na celou cestu , nejen název souboru. To znamená, že pokud hledáte foo , nedostanete žádné výsledky, protože foo neodpovídá /home/tux/Documents/foo . Místo toho musíte buď vyhledat celou cestu, nebo použít sekvenci zástupných znaků na začátku řetězce:

$ find ~ -iregex ".*foo"
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo

Najít soubor upravený za poslední týden

Chcete-li najít soubor, který jste naposledy upravili minulý týden, použijte -mtime možnost spolu se (záporným) počtem dní v minulosti:

$ find ~ -mtime -7
/home/tux/Documents/examples/foo
/home/tux/Documents/examples/Foo
/home/tux/Documents/examples /foo.xml
/home/tux/Documents/examples/foobar.txt

Najděte soubor upravený v rozmezí dnů

Můžete kombinovat -mtime možnosti vyhledání souboru v rozmezí dnů. Pro první -mtime zadejte poslední počet dní, kdy jste mohli soubor upravit, a za druhé uveďte největší počet dní. Toto vyhledávání například hledá soubory s dobou úprav více než jeden den v minulosti, ale ne více než sedm:

$ find ~ -mtime +1 -mtime -7 

Omezit vyhledávání podle typu souboru

Je běžné optimalizovat výsledky find zadáním typu souboru, který hledáte. Tuto možnost byste neměli používat, pokud si nejste jisti, co hledáte, ale pokud víte, že hledáte soubor a ne adresář, nebo adresář, ale ne soubor, pak to může být skvělé filtr k použití. Možnost je -type a jeho argumenty jsou písmenový kód představující několik různých druhů dat. Nejběžnější jsou:

  • d - adresář
  • f - soubor
  • l - symbolický odkaz
  • s - zásuvka
  • p - pojmenovaná roura (používá se pro FIFO)
  • b - speciální blok (obvykle označení pevného disku)

Zde je několik příkladů:

$ najít ~ -type d -name "Doc*"
/home/tux/Documents
$ find ~ -type f -name "Doc*"
/home/tux/ Downloads/10th-Doctor.gif
$ find /dev -type b -name "sda*"
/dev/sda
/dev/sda1

Upravit rozsah

find příkaz je ve výchozím nastavení rekurzivní, což znamená, že vyhledává výsledky v adresářích adresářů obsažených v adresářích (a tak dále). To může být ve velkém souborovém systému ohromující, ale můžete použít -maxdepth možnost ovládat, jak hluboko do struktury složek chcete find sestoupit:

$ najít /usr -iname "*xml" | wc -l
15588
$ najít /usr -maxdepth 2 -iname "*xml" | wc -l
15

Minimální hloubku rekurze můžete alternativně nastavit pomocí -mindepth :

$ find /usr -mindepth 8 -iname "*xml" | wc -l
9255

Stáhněte si cheat sheet

Tento článek popisuje pouze základní funkce find . Je to skvělý nástroj pro prohledávání vašeho systému, ale je to také opravdu užitečný front-end pro výkonný příkaz Parallel. Existuje mnoho důvodů, proč se naučit find , takže si stáhněte náš bezplatný find cheat sheet které vám pomohou dozvědět se více o příkazu.


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

  2. Použití linuxového příkazu find – Použití s ​​příklady

  3. Jak najít soubory pomocí příkazu fd v Linuxu

  1. Jak odstranit soubory a adresáře v Linuxu z příkazového řádku

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

  3. Najděte soubor pomocí příkazů Najít a najít v Linuxu

  1. Zkopírujte a vložte na příkazový řádek Linuxu pomocí xclip

  2. Jak používat Linuxový příkaz find k hledání souborů

  3. najít a odstranit soubory s mezerou pomocí příkazu find v Linuxu