Aktualizováno: 11/30/2020 do Počítače, Doufám, že

operační systémy Linux, příkaz může být použit k vyhledávání souborů a adresářů na vašem počítači. Chcete-li pokračovat, vyberte odkaz z následujícího seznamu nebo projděte každou sekci v pořadí.

Poznámka

Chcete-li použít find, začněte otevřením relace terminálu pro přístup k příkazovému řádku.

základní funkce find

running find bez jakýchkoliv možností vytvoří seznam všech souborů a adresářů v pracovním adresáři a pod ním., Například, pokud váš pracovní adresář je /home/doufám/Dokumenty, běží najít výstupy následující:

  • Každý soubor v /home/doufám/Dokumenty.
  • každý podadresář v / home / hope / Documents.
  • každý soubor v každém z těchto podadresářů.

podívejme se na to v akci., Za prvé, pojďme zkontrolovat náš pracovní adresář pomocí příkaz pwd:

pwd
/home/hope/Documents

Teď pojďme spustit bez jakékoliv možnosti:

find

V tomto příkladu, vidíme celkem deset souborů a čtyři podadresáře v a pod do složky Dokumenty.

všimněte si, že výstup začíná jednou tečkou, která představuje pracovní adresář., Běží najít bez možnosti je stejné, jako zadání, že hledání by mělo začít v pracovním adresáři, jako tento:

find .

výše uvedený příklad je „správný“ způsob, jak používat najít. Pokud se pokusíte použít na jiném Unixovém operačním systému, jako je FreeBSD, je nutné zadat adresář. Je dobré používat tuto formu příkazu.,

Určení, kde hledat

pouze seznam souborů a podadresářů, které jsou obsaženy v adresáři /home/doufám/Dokumenty/obrázky, zadejte jako první argument příkazu jako:

find /home/hope/Documents/images

Všimněte si, že celá cesta je také zobrazena ve výsledcích.,

Pokud je náš pracovní adresář je /home/doufám/Dokumenty, můžeme použít následující příkaz, který najde stejné soubory:

find ./images

Ale tentokrát, výstup odráží výchozí umístění vyhledávání a vypadá takto:

ve výchozím nastavení, vyhledává v každém podadresáři výchozí polohy. Pokud chcete omezit počet úrovní podadresáře pro vyhledávání, můžete použít volbu-maxdepth s číslem.

například zadáním-maxdepth 1 vyhledá pouze v adresáři, kde začíná vyhledávání., Pokud jsou nalezeny nějaké podadresáře, jsou uvedeny, ale nejsou prohledávány.,

find . -maxdepth 1
../images./bigfiles.txt./gimp-2.8.16.tar.bz2./hp-fanfic./archlinux-2016.02.01-dual.iso

Určení -maxdepth 2 prohledává adresář a jeden podadresář hluboké:

find . -maxdepth 2

Určení -maxdepth 3 hledání jednu úroveň hlouběji, než, že:

find . -maxdepth 3

Hledání podle názvu

omezit výsledky vyhledávání na zápas pouze soubory a adresáře, které mají určité jméno, použijte-jméno a možnost dát název do uvozovek:

find . -name "picard.jpg"
./images/memes/picard.jpg

můžete také používat zástupné znaky, jako součást názvu souboru., Například najít všechny soubory, jejichž název končí .jpg, můžete použít hvězdičku reprezentovat zbytek názvu souboru. Při spuštění příkazu, shell bude glob název souboru do něčeho, co odpovídá vzoru:

find . -name "*.jpg"
./images/hp/snape.jpg./images/hp/harry.jpg./images/memes/winteriscoming.jpg./images/memes/picard.jpg

Všimněte si, že naše velení nevěděl seznam souboru, jehož přípona (v tomto případě, JPG) je velkými písmeny. Je to proto, že na rozdíl od jiných operačních systémů, jako je Microsoft Windows, jsou názvy souborů Linux citlivé na velká a velká písmena.,“>

vypsat jen adresáře a vynechat názvy souborů, specifikovat-typ d:

find . -type d
../images./images/hp./images/memes./hp-fanfic

Hledání souborů podle velikosti

například, najít soubory, které jsou „větší než 50 kilobajtů“, použití-velikost +50k:

find . -size +50k
./images/memes/winteriscoming.jpg./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

Pro soubory „větší než 10 megabajtů“, použití-velikost +10M:

find . -size +10M
./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

„větší než 1 gigabajt“, použití -size +1G:

find . -size +1G
./archlinux-2016.02.01-dual.iso

Pro soubory v určitém rozmezí velikosti, použít dvě možnosti velikosti., Například, najít soubory „větší než 10 megabajtů, ale menší než 1 gigabajt“, specifikujte -velikost +10M -velikost -1G:

find . -size +10M -size -1G
./gimp-2.8.16.tar.bz2

vyhledávání souborů na základě modifikace, přístupu, nebo změna stavu

– mtime omezuje možnost vyhledávání podle toho, jak mnoho dní, protože obsah souboru byl změněn. Chcete-li zadat dny v minulosti, použijte záporné číslo., Například najít pouze ty soubory, které byly změněny za poslední dva dny (48 hodin), použití-mtime -2:

find . -mtime -2

– mmin možnost dělá to samé, ale v řádu minut, ne dní. Tento příkaz například zobrazuje pouze soubory upravené za poslední půlhodinu:

find . -mmin -30

podobná volba je-ctime, která kontroluje, kdy byl stav souboru naposledy změněn, měřeno ve dnech. Změna stavu je změna metadat souboru. Například změna oprávnění souboru je změna stavu.,

volba-cmin hledá změnu stavu měřenou v minutách.

můžete také vyhledat, kdy byl soubor Naposledy přístupný-jinými slovy, když byl jeho obsah Naposledy zobrazen. Volba-atime se používá k vyhledávání souborů na základě jejich poslední doby přístupu, měřeno ve dnech.

volba-amin provádí stejné omezení vyhledávání, ale měří se v minutách.

přesměrování výstupu do textového souboru

Pokud provádíte velmi velké vyhledávání, možná budete chtít uložit výsledky vyhledávání do souboru, abyste mohli výsledky zobrazit později., Můžete to provést přesměrováním výstupu find do souboru:

find . -iname "*.jpg" > images.txt

poté můžete své výsledky otevřít v textovém editoru nebo je vytisknout příkazem cat.

cat images.txt

Případně můžete trubka výstup pro tee příkaz, který vypíše výstup na obrazovku a zapsat jej do souboru:

find . -size +500M | tee bigfiles.txt
./archlinux-2016.02.01-dual.iso
cat bigfiles.txt
./archlinux-2016.02.01-dual.iso

Potlačení chybové zprávy

můžete obdržet chybovou zprávu „přístup odepřen“ při provádění vyhledávání., Například, pokud jste vyhledávání v kořenovém adresáři jako normální uživatel:

find /

obdržíte chybovou zprávu, pokud najdete pokusí o přístup k souboru váš uživatelský účet nemá oprávnění ke čtení. Vyhledávání můžete provést jako superuser (root), který má úplný přístup ke každému souboru v systému. Ale nedoporučuje se dělat věci jako kořen, pokud neexistují žádné jiné možnosti.,

Pokud vše, co musíte udělat, je skrýt „Oprávnění odepřen“ zprávy, můžete přidat 2&>1 | grep -v „Oprávnění odepřen“ na konec příkazu, jako je tento:

find / 2>&1 | grep -v "Permission denied"

výše uvedený příklad filtruje „Oprávnění odepřen“ zprávy z vašeho vyhledávání. Jak?

2>&1 je zvláštní, že přesměrování odešle chybové zprávy na standardní výstup, aby potrubí v kombinaci řádků výstupu pro příkaz grep., grep-v pak provádí inverzní zápas na „povolení odepřen“, zobrazující pouze řádky, které neobsahují tento řetězec.

Přesměrování a pomocí grep filtrovat chybové zprávy, je užitečná technika, kdy „Oprávnění odepřen“ je nepřehledná vaše výsledky vyhledávání a nemůžete provádět vyhledávání, jako root.

příklady

find ~/. -name "*.txt" -amin -120

Najděte všechny soubory v domovském adresáři a pod kterým končí přípona“.txt“. Zobrazit pouze soubory přístupné v posledních dvou hodinách.,

find . -name "*.zip" -size +10M -mtime -3

Najděte všechny soubory v pracovním adresáři a pod jehož názvem je přípona“.zip “ a jehož velikost je větší než 10 megabajtů. Zobrazit pouze soubory, jejichž obsah byl upraven za posledních 72 hodin.

find . -iname "*report*" -type f -maxdepth 2

proveďte rozsáhlé vyhledávání souborů, které obsahují slovo „report“ v jejich názvu. Pokud vyhledávání najde adresář s názvem“ report“, nezobrazujte jej. Hledejte pouze v pracovním adresáři a pod ním jednu úroveň adresáře.,

find / -name "*init*" 2>&1 | grep -v "Permission denied" | tee ~/initfiles.txt

Najděte všechny soubory v systému, jehož název obsahuje „init“ a potlačuje chybové zprávy. Zobrazit výsledky na obrazovce a výstup je do souboru v domovském adresáři s názvem “ initfiles.txt“.