PROGRAMOVÁNÍ PRO ZELENÁČE - 9. LEKCE: Linux a náš první příkaz - Martin Podloucký ? LearnTube.cz
Obsah:
- Linux
find
příkazovou syntaxi - Vyhledejte soubory podle názvu
- Vyhledejte soubory podle přípony
- Vyhledejte soubory podle typu
- Vyhledejte soubory podle velikosti
- Vyhledejte soubory podle data změny
- Vyhledejte soubory podle oprávnění
- Vyhledejte soubory podle vlastníka
- Vyhledejte a odstraňte soubory
- Závěr
Příkaz
find
je jedním z nejúčinnějších nástrojů arzenálu administrátorů systému Linux. Vyhledává soubory a adresáře v hierarchii adresářů na základě výrazu zadaného uživatelem a může provádět uživatelem zadanou akci pro každý odpovídající soubor.
Pomocí příkazu
find
můžete vyhledávat soubory a adresáře na základě jejich oprávnění, typu, data, vlastnictví, velikosti a dalších. Může být také použit v kombinaci s jinými nástroji, jako je
grep
nebo
sed
.
Linux
find
příkazovou syntaxi
Obecná syntaxe příkazu
find
je následující:
find
- Atribut
options
řídí léčbu symbolických odkazů, možností ladění a metodu optimalizace. Atributpath…
definuje počáteční adresář nebo adresáře, ve kterých bude hledané soubory hledat. Atributexpression
se skládá z možností, vzorů vyhledávání a akce oddělené operátory.
Chcete-li hledat soubory v adresáři, musí mít uživatel vyvolávající příkaz
find
v tomto adresáři oprávnění ke čtení.
Podívejme se na následující příklad:
find -L /var/www -name "*.js"
- Volba
-L
(options) říká příkazufind
aby následoval symbolické odkazy./var/www
(cesta…) určuje adresář, který bude prohledáván. (Výraz)-name "*.js
říkáfind
prohledávání souborů končících na.js
(soubory JavaScript).
Vyhledejte soubory podle názvu
Hledání souborů podle názvu je pravděpodobně nejčastějším použitím příkazu
find
. Chcete-li najít soubor podle jeho názvu, použijte volbu
-name
za názvem
-name
souboru.
Chcete-li například vyhledat soubor s názvem
document.pdf
v adresáři
/home/linuxize
, použijte následující příkaz:
find /home/linuxize -type f -name document.pdf
Chcete-li spustit vyhledávání nerozlišující velká a malá písmena, změňte volbu
-name
pomocí
-iname
:
find /home/linuxize -type f -iname document.pdf
Výše uvedený příkaz bude odpovídat „Document.pdf“, „DOCUMENT.pdf“..etc.
Vyhledejte soubory podle přípony
Hledání souborů podle přípony je stejné jako vyhledávání souborů podle názvu. Chcete-li například najít všechny soubory končící na
.log.gz
v adresáři
/var/log/nginx
, můžete použít:
find /var/log/nginx -type f -name '*.log.gz'
Je důležité zmínit, že když použijete zástupný znak, musíte buď uvozit vzorek, nebo uniknout znaku hvězdičky
*
se zpětným lomítkem
\
, aby nebyl interpretován shellem.
Chcete-li najít všechny soubory, které neodpovídají regexu
*.log.gz
, můžete použít volbu
*.log.gz
. Chcete-li například najít všechny soubory, které nekončí v
*.log.gz
, použijte:
find /var/log/nginx -type f -not -name '*.log.gz'
Vyhledejte soubory podle typu
Někdy budete možná muset hledat konkrétní typy souborů, jako jsou běžné soubory, adresáře nebo odkazy. V Linuxu je všechno soubor.
Chcete-li hledat soubory na základě jejich typu, použijte volbu
-type
a jeden z následujících deskriptorů k určení typu souboru:
-
f
: běžný soubord
: adresářl
: symbolický odkazc
: znaková zařízeníb
: blokovací zařízeníp
: pojmenovaný kanál (FIFO)s
: socket
Chcete-li například vyhledat všechny adresáře v aktuálním pracovním adresáři, použijte:
find. -type d
Běžným příkladem by bylo rekurzivně změnit oprávnění souboru webového serveru na
644
a oprávnění adresáře na
755
pomocí
chmod
:
find /var/www/my_website -type d -exec chmod 0755 {} ;
find /var/www/my_website -type f -exec chmod 0644 {} ;
Vyhledejte soubory podle velikosti
Chcete-li najít soubory na základě velikosti souboru, předejte parametr
-size
spolu s kritérii velikosti. Pro určení velikosti souboru můžete použít následující přípony:
-
b
: 512 bajtových bloků (výchozí)c
: bajtůw
: dvoubajtových slovk
: kilobajtůM
: megabajtůG
: gigabajtů
Následující příkaz najde všechny soubory s přesně
1024
bajty v adresáři
/tmp
:
find /tmp -type f -size 1024c
Příkaz
find
také umožňuje vyhledávat soubory, které jsou větší nebo menší než zadaná velikost.
V následujícím příkladu hledáme všechny soubory menší než
1MB
uvnitř aktuálního pracovního adresáře. Všimněte si mínus
-
symbol před hodnotou velikosti:
find. -type f -size -1M
find. -type f -size +1M
Můžete dokonce hledat soubory v rozsahu velikostí. Následující příkaz najde všechny soubory mezi
1
a
2MB
:
find. -type f -size +1M -size 21M
Vyhledejte soubory podle data změny
Příkaz
find
může také vyhledávat soubory na základě jejich poslední úpravy, přístupu nebo změny času.
Stejné jako při vyhledávání podle velikosti, použijte symboly plus a mínus pro „větší než“ nebo „menší než“.
Řekněme, že před několika dny jste upravili jeden z konfiguračních souborů holubice, ale zapomněli jste na který. Všechny soubory můžete snadno filtrovat v adresáři
/etc/dovecot/conf.d
který končí
/etc/dovecot/conf.d
.conf
a za posledních pět dní byl změněn pomocí:
find /etc/dovecot/conf.d -name "*.conf" -mtime 5
Zde je další příklad filtrování souborů na základě data modifikace pomocí volby
-daystart
. Níže uvedený příkaz zobrazí seznam všech souborů v adresáři
/home
které byly změněny před
30
nebo více dny:
find /home -mtime +30 -daystart
Vyhledejte soubory podle oprávnění
Volba
-perm
vám umožňuje hledat soubory na základě oprávnění k souborům.
Chcete-li například najít všechny soubory s oprávněními přesně
775
v adresáři
/var/www/html
, použijte:
find /var/www/html -perm 644
Numerický režim můžete předponou mínus
-
nebo lomítko
/
.
Když je lomítko
/
použito jako předpona, pak alespoň jedna kategorie (uživatel, skupina nebo jiné) musí mít alespoň odpovídající bity nastavené pro soubor, aby odpovídal.
Zvažte následující příklad příkazu:
find. -perm /444
Výše uvedený příkaz bude odpovídat všem souborům s oprávněními pro čtení nastavenými pro uživatele, skupinu nebo jiné.
Pokud je jako předpona použita mínus
-
musí být soubor nastaven tak, aby odpovídal alespoň zadaným bitům. Následující příkaz vyhledá soubory, které mají oprávnění ke čtení a zápisu pro vlastníka a skupinu a jsou čitelné ostatními uživateli:
Vyhledejte soubory podle vlastníka
Chcete-li najít soubory vlastněné konkrétním uživatelem nebo skupinou, použijte volby
-user
a
-group
.
Chcete-li například vyhledat všechny soubory a adresáře vlastněné
linuxize
uživatele, měli byste spustit:
find / -user linuxize
Zde je příklad z reálného světa. Řekněme, že chcete najít všechny soubory vlastněné uživatelem
www-data
a změnit vlastnictví uzavřených souborů z
www-data
na
nginx
:
find / -user www-data -type f -exec chown nginx {} ;
Vyhledejte a odstraňte soubory
Chcete-li odstranit všechny odpovídající soubory, připojte možnost
-delete
na konec výrazu shody.
Ujistěte se, že tuto možnost používáte, pouze pokud jste si jisti, že výsledek odpovídá souborům, které chcete odstranit. Před použitím volby
-delete
je vždy vhodné vytisknout odpovídající soubory.
Například pro smazání všech souborů končících
.temp
z
/var/log/
byste použili:
find /var/log/ -name `*.temp` -delete
Použijte možnost
-delete
s mimořádnou opatrností. Příkaz find je vyhodnocen jako výraz a pokud nejprve přidáte volbu
-delete
, odstraní příkaz vše pod počátečním bodem, který jste určili.
Pokud jde o adresáře,
find
může odstranit pouze prázdné adresáře stejné jako
rmdir
.
Závěr
Ukázali jsme vám, jak používat příkaz
find
s různými možnostmi a kritérii.
Tento článek by vám měl poskytnout základní informace o tom, jak vyhledávat soubory v systémech Linux. Můžete také navštívit stránku
find
a přečíst si všechny další výkonné možnosti příkazu
find
.
Jak vytvořit databázi mysql na Linuxu pomocí příkazového řádku
Tento tutoriál vysvětluje, jak pomocí příkazového řádku vytvářet databáze MySQL nebo MariaDB.
Jak odstranit databázi mysql na Linuxu pomocí příkazového řádku
Tento tutoriál popisuje, jak odstranit (nebo zrušit) databázi MySQL nebo MariaDB pomocí příkazového řádku.
Jak odstranit soubory a adresáře pomocí linuxového příkazového řádku
V tomto tutoriálu vám ukážeme, jak pomocí příkazu rm odstranit soubory a adresáře pomocí příkladů a vysvětlení nejběžnějších možností rm.