Možná budete muset najít adresář ve svém operačním systému Linux a trpíte tím, že neznáte skutečný příkaz k nalezení umístění různých souborů přítomných ve vašem operačním systému založeném na Linuxu. K tomuto účelu se používá příkaz Linux find directory.
Příkaz Najít se používá k vyhledání umístění souborů v systémech založených na Unixu nebo Linuxu. Příkaz find je součástí balíčku „findutils“ a je přítomen ve všech distribucích Linuxu. Můžete hledat adresáře a soubory při použití mnoha podmínek. Akce bude provedena podle vámi použitých podmínek, které ovlivní výsledek.
Úvod do příkazu Linux find directory
Nejjednodušší forma příkazu find je dána takto:
find [paths] [expression] [actions]
Další formy příkazu find jsou dány jako při spuštění příkazu find hledá adresáře a soubory v každé cestě. Jakmile nalezne adresář v zadané cestě, začne hledat další soubory a adresáře ve stejné cestě. Tento proces se nezastaví, dokud nevyhledáte všechny soubory ve vámi uvedené cestě.
find /where/to/look/up criteria action find /dir/path/look/up criteria action find /dir/path/look/up -name "name-of-dir" find /dir/path/look/up -name "pattern" find /dir/path/look/up -name "name-of-dir" -print find /dir/path/look/up -name "name-of-dir" find / -name "name-of-dir" find / -type d -name "name-of-dir" find / -type d -name "name-of-dir" 2>/dev/null
Prohledávání všech adresářů a souborů
Pokud chcete seznam všech souborů a adresářů ze zadané cesty, můžete to udělat zadáním cesty. Pokud například chcete seznam všech souborů z cesty usr/share, můžete použít následující příkaz:
find /usr/share
Pokud chcete vypsat soubory z více než jednoho adresáře najednou, můžete použít následující příkaz:Po spuštění tohoto příkazu se na konzole zobrazí seznam všech adresářů a souborů z vaší zadané cesty. Seznam může být velmi dlouhý na základě vašeho uloženého obsahu.
find /bin /usr/li
Předpokládejme, že chcete, aby byl seznam obsahu přítomen přímo ve vaší aktuální práci. To lze rychle provést vložením tečky (.) za příkaz find, podobně jako:
find .
Pokud nějakým způsobem zapomenete vložit tečku za příkaz find, pak se data z aktuálního pracovního adresáře zobrazí pouze spuštěním příkazu find.
find
Filtrování položek s jejich názvy
Mnohokrát je potřeba filtrovat různé položky pomocí jejich názvů. Linuxový příkaz find directory vám s tím také může pomoci.
Předpokládejme, že chcete vyhledat soubor s názvem NEW.txt, který se nachází v adresáři /Desktop, pak můžete použít přepínač "-name", jak je uvedeno níže:
find Desktop -name NEW.txt
Použití přepínače "-name" více rozlišuje velká a malá písmena. Chcete-li použít příkaz nerozlišující malá a velká písmena, můžete použít "-name" místo "-name"
find Desktop -iname new.txt
Oba tyto přepínače podporují „zástupné znaky“, které se používají jako zástupné symboly pro neznámé znaky. Zástupný znak "* " se používá k zobrazení libovolného počtu neznámých znaků, zatímco "?" se používá na jeden neznámý znak.
Chcete-li použít tyto zástupné znaky, musíte zadat parametr příkazu "name / inname" do dvojitých nebo jednoduchých uvozovek.
Předpokládejme, že chcete vyhledat všechny soubory v adresáři /Desktop, které jako poslední obsahují .txt. Pak to lze provést následujícím příkazem Linux find directory:
find Desktop -name '*.txt'
Nyní, pokud chcete hledat soubory, které obsahují tři znaky ve svém názvu, můžete použít "?" zástupný znak uzavřený v uvozovkách.
find Desktop -name '???'
Určení hledání buď souborů nebo adresářů
Při použití příkazu k nalezení adresáře v systému Linux můžete také určit typ vyhledávání. Můžete použít přepínač "-type" pro určení, že hledáte pouze soubory nebo adresáře. Přepínač "-type" má celkem tři parametry:
- f - soubory
- d – adresáře
- l – symbolické odkazy
Pokud chcete najít všechny adresáře v cestě /usr, můžete použít:
find /usr -type d
Existuje další způsob použití přepínačů jejich kombinací. Chcete-li například vyhledat „.txt“ pomocí přepínače -name a současně zadat typ souboru přepínačem „-type“:
find /usr -type f -name '*.txt'
Stejně jako ve výše uvedeném příkladu můžete také najít adresáře pomocí parametru "d" v cestě /usr. Pro nalezení "cherrytree" pojmenovaných adresářů:
find /usr -type d -name 'cherrytree'
Prázdný přepínač pro hledání prázdných souborů
Můžete použít přepínač "-empty" v Linuxu v příkazu Linux find directory. Tento přepínač se používá k vyhledání jakýchkoli prázdných souborů nebo prázdných adresářů přítomných ve vámi zadané cestě. Chcete-li najít prázdné soubory v adresáři /usr, můžete použít následující příkaz s přepínačem "-type":
find /usr -type d -empty
Negování shod v příkazech hledání
Pokud chcete něco z vyhledávání vyloučit, můžete použít příkaz find k negaci podmínky.
Předpokládejme, že chcete hledat soubory bez přípony ". Py" v adresáři /usr. S přepínačem "-name" můžete vložit vykřičník (!), jak je znázorněno níže:
find /usr -type f ! -name '*.py'
Vykřičník lze také použít jako oponu jakéhokoli jiného přepínače. Například v případě přepínače "-empty" můžete použít "!" pro hledání neprázdných adresářů namísto prázdných adresářů.
find /usr -type f ! -empty
Hledání souborů na základě jejich vlastnictví
Existuje možnost vyhledání souborů na základě vlastnictví uživatele. Pro vyhledávání souborů souvisejících s konkrétním uživatelem můžete použít přepínač "-user". Pokud chcete vyhledat soubory související s uživatelem jménem "root", můžete použít následující příkaz a získat seznam všech jeho souborů.
find / -type f -user root
Místo uživatelského jména můžete také použít ID uživatele ke kontrole všech souborů patřících tomuto uživateli. Pokud neznáte své uživatelské ID, můžete jej najít pomocí následujícího příkazu.
id -u <username>
Můžete také vyhledávat po skupinách pomocí názvu skupiny nebo ID skupiny. Pro nalezení vašeho ID skupiny můžete použít následující příkaz.
id -g <username>
Vyhledávání souborů podle jejich velikosti
Linuxový příkaz find directory také umožňuje vyhledávat soubory na základě jejich velikosti. Pro tento účel se používá přepínač "-size" a vztahuje se pouze na soubory, nikoli na adresáře.
Velikost souboru můžete určit zadáním čísla, za kterým následuje abeceda. Tato písmena se používají s přepínačem "-size",
- c-bajtů
- k – kilobajtů
- m – megabajtů
- g – gigabajty
Můžete také použít podmínku menší než nebo větší než pomocí znamének „+“ a „-“.
Zde je příklad, jak najít všechny systémové soubory o velikosti 20 kB:
find / -size 20k
Pokud chcete vyhledat soubory větší než 1 GB, můžete použít:
find / -size +1G
V případě, že chcete soubory o velikosti menší než 20 MB, můžete použít následující prohlášení:
find / -size -20M
Provádění akcí pomocí příkazu najít adresář
Příkazy, které jsme dosud používali, slouží pouze k zobrazení výsledků na terminálu, ale pomocí příkazu find můžeme provést některé akce. Můžeme také provádět nezbytné akce, jako je kopírování nebo mazání souboru.
Pro mazání souborů
Můžete snadno odstranit jakýkoli soubor nebo adresář jednoduchým použitím "-delete" pomocí příkazu find. Předpokládejme, že chcete odstranit všechny prázdné soubory v adresáři /Desktop, pak můžete použít následující příkaz:
find Desktop -type f -empty -delete
Provádění příkazů
Přepínač "-exec" se používá k provedení vlastního příkazu. S pomocí přepínače "-exec" můžete udělat hodně.
Pro kopírování všech souborů najednou můžete použít:
find ~ -type f -name '*.mp3' -exec cp {} ';'
Ve výše uvedeném příkazu používáme ";" zobrazit konec příkazu, který je uzavřen v uvozovkách. "{}" (závorky), které vidíte, se používají k definování umístění.
Nyní, když je nalezen odpovídající soubor podle zadaného, je aktivován příkaz cp k přesunutí souborů z umístění.
Závěr
S pomocí příkazu find toho můžete udělat mnohem víc. Je to užitečné pro ty, kteří jsou zvyklí na Linux CLI (command-line-interface). Příkaz find je nabitý mnoha možnostmi, které vám pomohou provádět různé akce a dělat mnohem více. Existují také návody na příkazy pro přesun a kopírování v Linuxu, podívejte se na ně.