Vyhledávání souborů je relativně snadné, když používáte GUI. Ale v určitých prostředích, jako jsou servery bez GUI, musíte hledat soubory pomocí příkazového řádku.
V Linuxu existuje výkonný příkaz, který vám pomůže vyhledávat soubory a složky s názvem find
. V tomto článku budeme diskutovat o find
příkaz s několika příklady.
Co je příkaz find v Linuxu?
find
umožňuje efektivně vyhledávat soubory, složky a znaková a bloková zařízení.
Níže je uvedena základní syntaxe find
příkaz:
find /path/ -type f -name file-to-search
Kde,
/path
je cesta, kde se očekává, že bude soubor nalezen. Toto je výchozí bod pro vyhledávání souborů. Cesta může být také/
nebo.
které představují kořenový a aktuální adresář.-type
představuje deskriptory souborů. Mohou to být kterékoli z níže uvedených:
f
– Běžný soubor jako jsou textové soubory, obrázky a skryté soubory.
d
– Adresář . Toto jsou složky, o kterých se uvažuje.
l
– Symbolický odkaz . Symbolické odkazy ukazují na soubory a jsou podobné zkratkám.
c
– Znaková zařízení . Soubory, které se používají pro přístup k znakovým zařízením, se nazývají soubory znakových zařízení. Ovladače komunikují se znakovými zařízeními odesíláním a přijímáním jednotlivých znaků (bajtů, oktetů). Příklady zahrnují klávesnice, zvukové karty a myš.
b
– Blokovat zařízení . Soubory, které se používají pro přístup k blokovým zařízením, se nazývají soubory blokových zařízení. Ovladače komunikují s blokovými zařízeními odesíláním a přijímáním celých bloků dat. Příklady zahrnují USB, CD-ROM
-name
je název typu souboru, který chcete prohledávat.
Příklady příkazu find
Nyní známe syntaxi find
příkaz, podívejme se na několik příkladů.
Jak vyhledávat soubory podle názvu nebo přípony
Předpokládejme, že potřebujeme najít soubory, které obsahují ve svém názvu „style“. Použijeme tento příkaz:
find . -type f -name style*
Výstup
Nyní řekněme, že chceme najít soubory s konkrétní příponou jako .html
. Příkaz upravíme takto:
find . -type f -name *.html
Výstup
Jak hledat skryté soubory
Skryté soubory jsou znázorněny tečkou na začátku názvu souboru. Obvykle jsou skryté, ale lze je zobrazit pomocí ls -a
v aktuálním adresáři.
Můžeme upravit find
k vyhledání skrytých souborů, jak je uvedeno níže.
find . -type f -name ".*"
Výstup
Jak prohledávat soubory protokolu a konfigurační soubory
Soubory protokolu mají obvykle příponu .log
, a můžeme je najít takto:
find . -type f -name "*.log"
Výstup
Podobně můžeme hledat konfigurační soubory takto:
find . -type f -name "*.conf"
Jak hledat jiné soubory podle typu
Soubory bloků znaků můžeme vyhledat zadáním c
na -type
:
find / -type c
Podobně lze soubory bloků zařízení najít pomocí b
:
find / -type b
Jak vyhledávat adresáře
V níže uvedeném příkladu nacházíme složky s názvem lib
. Všimněte si, že používáme -type d
.
find . -type d -name "lib*"
Výstup
💡 Tip:Adresáře můžeme identifikovat podle d
příznak ve výstupu ls -lrt
.
Jak vyhledávat soubory podle velikosti
Neuvěřitelně užitečné použití find
příkaz je vypsat soubory na základě konkrétní velikosti.
find / -size +250MB
Mezi další jednotky patří:
G
:GigaBytes.M
:Megabajty.K
:kilobajtyb
:bajtů.
Stačí nahradit
find <directory> -type f -size +N<Unit Type>
Jak vyhledávat soubory podle času úpravy
find /path -name "*.txt" -mtime -10
- -mtime +10 znamená, že hledáte soubor upravený před 10 dny.
- -mtime -10 znamená méně než 10 dní.
- -mtime 10 Pokud přeskočíte + nebo –, znamená to přesně 10 dní.
Níže je obsah mého domovského adresáře:
Aplikujme příklad v mém domovském adresáři.
find . -type f -name ".*" -mtime +10
Praktické příklady find
s bash skripty
Můžeme kombinovat find
pomocí rm
nebo mv
vytvářet smysluplné bash skripty, které lze automatizovat.
Řekněme, že chceme vytvořit skript, který přesune soubory protokolu starší než 7 dní na záložní cestu. Odtud odstraní soubory protokolu starší než 30 dní. Můžeme vytvořit skript a naplánovat jej pomocí cron
. Můžete se dozvědět více o cron
pracovních míst zde.
Podívejme se na skript:
#!/bin/bash
# Script to move from logs older than 7 days to backup logs path: /app/backup_logs/ESB0*
# move ESB01 logs to backup
find /logs/esb01/audit -name "*.tar.gz" -mtime +7 -exec mv {} app/backup_logs/ESB01/ \;
# Remove logs from backup path after 30 days
find /app/backup_logs/ESB01 -name "*.tar.gz" -mtime +30 -exec rm {} \;
Všimněte si, že používáme exec
pomocí find
. V podstatě exec
provede zadaný příkaz ( mv
a rm
v našem případě). {}
je zástupný symbol, který obsahuje výsledky příkazu. Nakonec poskytujeme oddělovač ;
. Protože nechceme, aby shell interpretoval středník, uzavřeme jej pomocí \
.
Sdílený skript je velmi užitečný při archivaci a odstraňování protokolů.
Zabalení
V tomto článku jsme studovali find
podrobně a naučili se vyhledávat soubory podle názvu, typu, velikosti a času úpravy.
Doufám, že vám tento návod pomohl.
Podělte se o své myšlenky na Twitteru!
Zde si můžete přečíst mé další příspěvky.
Zdroje:Bannerové obrázky z ilustrací Office od Storyset a Canva.