Linux find
příkaz je výkonný nástroj, který umožňuje správci systému, jak najít a spravovat soubory a adresáře na základě široké škály kritérií vyhledávání. Může najít adresáře a soubory podle jejich jména, typu nebo rozšíření, velikosti, oprávnění atd.
kromě vyhledání souborů a adresářů vám kombinace příkazu find
s ostatními umožňuje podniknout kroky k výsledkům., Přidání -exec
volba umožňuje administrátoři spouštět externí příkazy a provádět akce, jako je kopírování, přesouvání, mazání nebo změně oprávnění souborů, které odpovídají zadaným kritériím jako je velikost, jméno, atd.
v tomto článku začneme vysvětlením základních příkazů Linux find s příklady. To vám ukáže, jak najít soubory a adresáře. Pak budeme ukázat vám, jak použít -exec
možnost působit na soubory či adresáře na základě jejich velikosti, oprávnění, atd.,
obecná syntaxe pro příkaz najít, je,
find {path} {name -of-file or dir-to-search} {action-to-take}
Kde:
V tomto tutoriálu se budeme vysvětlovat, jak najít soubory a adresáře odpovídající zadané vzory. Uvidíme také, jak provádět akce v souborech nebo adresářích, které vyhledá příkaz find. Průvodce je založen na Ubuntu, ale je použitelný pro většinu linuxových distribucí a verzí.
Najít soubory a Adresáře
Najít konkrétní soubory podle názvu nebo rozšíření
hledat pro konkrétní soubor, spusťte následující příkaz z kořene (/)., Příkaz obsahuje přesný název souboru, který hledáte.
find . -name file22.txt
výstup
./test/file22.txt./sales/file22.txt
Vezměte prosím na vědomí, že výsledky obsahují cestu. To je důležité, pokud neznáte adresář, kde je soubor umístěn, nebo když je na více než jednom místě.
soubor můžete také vyhledat v jiném adresáři, zatímco je stále v aktuálním umístění. V takovém případě musíte zadat cestu k adresáři, kde chcete hledat.,
find ./test -name file22.txt
Hledat konkrétní soubory do jiného adresáře
V našem případě, budeme hledat pro všechny ty začínající písmeny soubor v adresáři test.
find ./test -name file*
Výstupní
./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc
Vyhledávání souborů podle rozšíření
Chcete-li najít soubor v Linuxu s určitou příponou, přidejte jej do příkazu.,
find . -name *.txt
Výstupní
./test/subtest/subfil.txt./test/file22.txt./test/file1.txt./home1/files32.txt./home2/file22.txt./qa/tags.txt
Najít soubory a adresáře podle názvu
Použijte příkaz níže se podívejte na soubory a adresáře, začínající písmeny qa
. V našem počítači máme soubory qatree.txt
a qa.txt
a adresář pod názvem qa
.,
Když jsme se spustit příkaz;
find ./ -name "qa*"
vrátí následující výstup
./test/qatree.pdf./test/qa.txt./home/qa
příkaz vrátí oba soubory a adresáře odpovídající kritéria vyhledávání. Chcete-li najít pouze soubory nebo adresáře, musíte to zadat v příkazu.
Najděte pouze soubory nebo adresáře
pouze pro soubory použijte přepínač type f
.
Soubory
find ./ -type f -name "qa*"
Výstupní
./test/qatree.pdf./test/qa.txt
Adresáře
Přidat type d
možnost najít jen adresáře.,
find ./ -type d -name "qa*"
Output
./home/qa
Case insensitive find command
Všechna vyhledávání pomocí-name
switch jsou malá a malá písmena. Chcete-li získat všechny případy, použijte volbu -iname
.
find ./ -iname "qa*"
Výstupní
./test/qatree.pdf./test/qa.txt./test/QAtest.txt./home/qa
Vyhledat soubor z více adresářů
najít soubory v různých adresářích, přidejte se jejich cesty v příkazu., V našem případě zkontrolujeme adresáře test
a .
find ./test ./numeric -name file22.txt -type f
Výstupní
./test/file22.txt/root/numeric/file22.txt
Najít více souborů s různými příponami ze všech adresářů
můžete použít najít příkaz najít více souborů, které sdílejí různá rozšíření, jako například *.doc
, *.txt
*.pdf
, atd. To lze provést samostatně, jedno rozšíření najednou nebo pomocí jediného příkazu, který obsahuje všechna požadovaná rozšíření.,
find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )
výstupní
Najít soubory obsahující určitý text
Někdy chcete přístup k souboru obsahující určitý text, ale nevybavuji jeho název souboru nebo umístění. Tento příkaz vám umožní najít všechny soubory obsahující cílový text.
hledat pro všechny soubory obsahující slovo hyperconvergence“, použití;
find / -type f -exec grep -l -i "hyperconvergence" {} ;
Výstupní
/root/numeric/hci/root/HCIP
–jsem možnost umožňuje příkaz ignorovat případech a bude najít text, zda vydělával nebo ne, tj. hyperconvergence, Hyperconvergence , atd.,
podívejte se na soubory v určitém adresáři, jednoduše ji přidat do příkazu
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
Výstupní
./numeric/hci
Najít Soubory a Adresáře na Základě Velikosti
můžete najít všechny soubory nebo adresáře, které jsou menší, roven nebo větší než určité velikosti, v určitém rozsahu nebo prázdný. Použijte vhodný formát velikosti V závislosti na typu souborů nebo adresářů, které hledáte.,najít soubory určité velikosti – rovná 30MB
Do Hledání najít všechny 30MB souborů
find / -size 30M
Najít soubory větší než zadaná velikost
find -size +2M
Výstupní
. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c
Najít soubory menší než 10MB v aktuálním adresáři
find . -type f -size -10M
Hledat soubory, jejichž velikost je mezi 100-200MB
Při pohledu na soubory v určitém rozsahu, jako je mezi 100 a 200 MB.
find / -size +100M -size -200M
hledat adresáře větší než 20kb
find / -type d -size +20k
Najít prázdné soubory a adresáře.,
Soubory
find ./ -type f -size 0
nebo
find ./ -type f –empty
Adresáře
find ./ -type d –empty
Najít soubory podle věku nebo změna času
Najít soubory starší než n dní
find /path/ -type f -name '*.txt' -mtime +8
-mtime +8
bude vypadat. txt
soubory, které jsou starší než 8 dní.,
datum změny
To bude hledat soubory, upravený v 17 hodin
find . -mtime -17 -type f
Vypadá pro adresáře změněn během posledních 10 dní,
find . -mtime -10 -type d
Najít soubory na základě přístupu nebo změna
Najít soubory na základě data nebo času přistupovat. To vám umožní vidět soubory, které mají nebo nebyly přístupné ve stanovené lhůtě.
Chcete-li zobrazit soubory, které nebyly přístupné během posledních 10 dnů v domovském adresáři.,
find /home -atime +10
Soubory přístupné přesně před 10 dny
find /home -atime 10
Přístupné během posledních 10 dní,
find /home -atime -10
Najít soubory, modifikované v posledních n dní
můžete se také podívat na soubory v /home
adresář změněn během posledních 10 dnů pomocí příkazu;
find /home -mtime -10
hledání souborů modifikovaných v rámci určitého období.
například všechny soubory modifikované Před 6 až 15 dny v domovském adresáři.,
find /home -type f -mtime +6 -mtime -15
Soubory a adresáře přístupné během posledních 10 minut
najít soubory přístupné během posledních 10 minut, použijte-amin možnost.
find . -amin -10 -type f
Výstupní
./.bash_history./.profileroot@ubuntu1804:~#
Adresáře přístupné během posledních 10 minut
find . -amin -10 -type d
Najít soubory odpovídající konkrétní oprávnění
Syntax
$ find -perm mode
Kde je režim povolení, který je buď číselné, například 644, 655, 700, 777
, atd., nebo dopisy, například u=x, a=r+x,
atd.,
režim můžete zadat následujícími třemi různými způsoby.
- bez předpony, pokud chcete najít soubory s přesnými zadanými oprávněními.
- s“
-
“ pro soubory s alespoň zadaným povolením. To vrací soubory se zadaným, stejně jako další vyšší oprávnění. - použití „
/
“ vyžaduje zadání vlastníka nebo skupiny se svolením k souboru.,
Najít soubory s povolením 777
find -perm 777
Výstupní
./file1
Vyhledejte soubory s alespoň 766
najít -perm -766
Výstupní
./file2./file1
příkaz vyhledá všechny soubory, ve kterých
- soubor vlastník má číst/zapisovat/spouštět oprávnění.
- skupina má oprávnění ke čtení / zápisu
- ostatní mají oprávnění ke čtení/zápisu
jako takové, vrací dva soubory, které splňují toto kritérium-file1 a file2., Soubory nemusí mít přesná oprávnění 766
a mohou mít další, Pokud však musí mít alespoň zadané.
Hledat soubory pro zápis vlastníka
nyní použijeme „/
“ vypadá pro soubory zapisovat buď jejich majitel, nebo skupiny, nebo ostatní.
find -perm /222../file2./file3./file1
výše uvedené hledá soubory, které jsou zapisovatelné buď jejich vlastníkem nebo skupinou.
to vrací soubory, které jsou zapisovatelné buď, ale ne nutně obojí. Chcete-li zobrazit soubory, kde oba mají zapisovatelná oprávnění, použijte předponu -.,
./file2./file1
Najít soubory ve vlastnictví uživatele
Najít všechny soubory vlastněné Jack
find /home -user jack
Výstupní
/home/jack/home/jack/examples.desktop/home/jack/.gnupg/home/jack/.gnupg/private-keys-v1.d/home/jack/ans.cgi
Najít konkrétní soubory ve vlastnictví uživatele
Najít všechny textové soubory ve vlastnictví Jack
find /home -user jack -iname "*.txt"
Výstupní
/home/jack/docs/file32.txt
Najít a seznam souborů a adresářů spolu s jejich oprávnění
find -name "*.conf" | ls -l
Výstupní
Najít a působit na výsledky
V této části, my se podíváme na to, jak se může jednat o soubory, které odpovídají vzoru zadaného v příkazu find.,
najděte soubory a změňte oprávnění
najděte a změňte oprávnění určitých typů souborů. V našem případě budeme pracovat se soubory PHP s různými oprávněními, jak je uvedeno níže.,
nyní Budeme hledat všechny PHP soubory (výše) a nahradit jejich oprávnění s 755,
find ver -name "*.php" -type f -exec chmod 755 {} ;
příkaz vyhledá PHP soubory v ver
adresář a pak nastaví jejich svolení, aby 755
(rwxr-xr-x
)
Výsledky
Najít a změnit soubor a adresář oprávnění
Vyhledejte soubory s 644 oprávnění a změnit je, aby 655 permissions
find . -type f -perm 644 -exec chmod 655 {} ;
můžete se také podívat na adresáře s 644 oprávnění a nahradit 755.,
find . -type d -perm 644
Výstupní
./docs
složce docs má oprávnění 644
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
nastavte 755
, provozujeme
find . -type d -perm 644 -exec chmod 755 {} ;
Nyní se můžeme znovu zkontrolovat, aby viděli, co přesně 755
find . -type d -perm 755
Výstup
.
./ docs
shora vidíme, že adresáře root a docs mají oprávnění 755.,
Ls –la
příkaz dává následující údaje
drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs
Najít a zkopírovat soubory nebo adresáře
Najít a zkopírovat určitý soubor do adresáře
příkaz níže najdete file22.tx
t soubor a zkopírujte jej do ~/tmp/images
adresář.,
find -iname file22.txt -exec cp {} ~/tmp/images ;
vyhledejte a zkopírujte jeden typ souborů do adresáře
najít soubory, jako jsou obrázky s jpg
souboru v aktuálním adresáři a zkopírujte je do jiného umístění jako složky obrázky, používat;
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
To najít a zkopírovat všechny jpg soubory ~/tmp/images
složka.
Najděte a zkopírujte jeden soubor do mnoha adresářů
Najděte a zkopírujte jeden do více adresářů.,
find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;
Tento bude najít soubor hci soubor a zkopírujte jej do tří adresářů /tmp/dir1/ /tmp/dir2/
$HOME/3/
Najít a přesunout soubory do jiného adresáře
přesunout známý soubor z adresáře do jiného., Přesunout do universal.php
soubor;
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
Hledat a přesouvat soubory s určitou příponou do jiné složky,
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
Najít určité soubory a přesunout na konkrétní jiné složky
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
příkaz vyhledá všechny soubory s názvy začínající uni
a některá rozšíření. To pak přesune do adresáře /unifiles/
Najít a přesunout soubory na základě věku
hledat a přesouvat soubory starší než zadané dny do jiného umístění, například na archiv.,
find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;
toto bude hledat soubory pdf starší než 20 dní a přesunout je do adresáře backup1.,soubory a adresáře
syntaxe pro nalezení a odstranění souborů nebo adresářů v aktuálním adresáři, je,
find . -type f -name "file to delete" -exec rm -f {} ;
odstranit soubory nebo pouze
find . -type d -name "dir-to-delete" -exec rm -rf {} ;
smazat adresáře pouze
Najít a odstranit konkrétní soubory pouze
najít a odstranit soubory, počínaje s til, použití;
find . -type f -name "til*" -exec rm {} ;
najít a odstranit adresářů počínaje, až
find . -type d -name "til*" -exec rm {} ;
Odstranit oba soubory a adresáře
find . -name "til*" -exec rm -rf {} ;
odstraňte oba soubory a adresáře, začínající písmeny til.,
Odstranit rozšíření
Níže je, jak můžete najít a odstranit všechny txt
soubory v aktuálním adresáři. Nahraďte txt
jiným rozšířením, jako je bak
, pdf
nebo jiným, které chcete odstranit.
find . -type f -name "*.txt" -exec rm -f {} ;
v případě, že chcete, aby vás systém vyzval k potvrzení před odstraněním každého souboru, přidejte možnost-i níže.,
find . -type f -name "*.txt" -exec rm -i {} ;
Výstupní
ve výchozím nastavení -rm
nebude odstranit adresáře a budete muset použít –r
možnost zajišťuje rekurzivní odstranění. Tím je zajištěno odstranění prázdných adresářů a adresářů obsahujících soubory. Volba -f
vynutí odstranění a používá se jak pro soubory, tak pro adresáře.
Najděte a odstraňte soubory starší než n dny
Najděte a odstraňte záložní soubory starší než 20 dní z aktuálního adresáře.,
find . -type f -name '*.bak' -mtime +20 -exec rm {} ;
tím se odstraní všechny soubory .bak
starší než 20 dní.
Najít a odstranit adresáře pouze
odstranit adresář s názvem dir22
find . -type d -name dir22 -exec rm -rf {} ;
ujistěte se, že jste zápas název adresáře případě, nebo použijte -iname
možnost.
find . -type d -iname Dir22 -exec rm -rf {} ;
Odstraňuje Dir22
dir22
K potvrzení před odstraněním, použijte-jsem možnost.
find . -type d -iname Dir22 -exec rm -rf -i {} ;
výstup
rm: odebrat adresář ‚./ Dir22‘?, n
rm: odebrat adresář ‚./ dir22‘? y
V našem případě jsme zadali n
do adresáře Dir22
, které nebudou odstraněny, a y
dir22
, který bude nyní odstraněn.
Najděte a odeberte prázdné soubory
můžete použít některý z následujících příkazů k vyhledání prázdných souborů a jejich automatickému odstranění.
find ./ -type f -size 0 -exec rm -f {} ;
nebo
Najít .| – typ F-velikost 0 / xargs rm-f
nebo
Najít .,/ – Type F-size 0-delete
Najděte a odstraňte prázdné adresáře
pro odstranění prázdných adresářů použijeme volbu d
.
find ./ -type d -empty -exec rmdir {} ;
další alternativou je použití delete namísto remove.
find ./ -type d -empty -delete
Upozorňujeme, že odstranění systému nebo kritických souborů z počítače může poškodit operační systém nebo aplikace nebo vést ke ztrátě důležitých dat.
Chcete-li se vyhnout náhodným smazáním, je nejlepší použít uživatelský účet, který není root., Také se ujistěte, že odstraňujete správné soubory, které nejsou užitečné a že máte zálohu všech datových souborů jen pro případ.
co bude dál?
pokračujte a vyzkoušejte výše uvedené příkazy Linux find ve vašem laboratorním nebo nevýrobním prostředí. Zjistěte, zda můžete některé použít k automatizaci vyčištění systému souborů pomocí Crontab. A chcete-li zvládnout Linux, podívejte se na tento online kurz.