find - nástroj pro vyhledávání souborů podle názvu a dalších vlastností, používaný v operačních systémech typu UNIX . Může prohledávat jeden nebo více adresářů pomocí kritérií zadaných uživatelem . Ve výchozím nastavení vrátí všechny soubory v pracovním adresáři . Navíc umožňuje uživateli aplikovat určité akce na všechny nalezené soubory. Podporovány jsou také regulární výrazy . Chcete-li vyhledávat soubory podle obsahu, použijte nástroj grep . findfind
Najděte všechny soubory v aktuálním a podřízeném adresáři, které začínají na můj .
Poznámka: z hlediska unixu je vše, včetně adresářů, soubor .
nalézt. -jméno 'můj*'Chcete-li vyhledávat pouze podle názvů souborů, musíte použít další možnost-type f
nalézt. -jméno 'moje*' -typ fNajděte všechny soubory v kořenovém a podřízeném adresáři, které začínají na můj .
Prohledávání kořenového adresáře je ekvivalentní prohledávání celého počítače.
najít / -jméno 'moje*'Vyhledávání souborů v adresářích /usr/local/mana/opt/local/man
najít /usr/local/man /opt/local/man -name 'my*'Najděte všechny soubory v aktuálním a podřízeném adresáři, které začínají na my nebo qu .
Všimněte si, že ve výchozím nastavení jsou všechny argumenty spojeny pomocí logických a (volba -a, z angličtiny a ). Pokud potřebujete spojit několik argumentů s logickým nebo - použijte volbu -o, z angličtiny. nebo .
nalézt. \( -name "my*" -o -name "qu*" \) -printNajděte všechny soubory v aktuálním a podřízeném adresáři, jejichž přípona odpovídá uvedeným.
Toto vyhledávání se provádí pomocí regulárních výrazů .
nalézt. -type f -regex ".*\.\(jpg\|jpeg\|gif\|png\|JPG\|JPEG\|GIF\|PNG\)"Předchozí příklad lze také napsat pomocí regulárních výrazů
nalézt. -type f -regex "\(my\|qu\).*"Volba -exec provede příkaz, který za ní následuje, a nahradí {}jej aktuálním souborem. Najděte všechny adresáře pod zadaným adresářem a změňte jejich oprávnění pomocí příkazu chmod :
najít /cesta -typ d -exec chmod 0755 {} \;Volba -exec je asi 10krát pomalejší než přesměrování výstupu přes xargs , takže se doporučuje napsat tento kód takto:
najít /cesta -typ d | xargs chmod 0755Adresáře s názvy obsahujícími mezery však nebudou zpracovány metodou přesměrování xargs, takže byste měli použít první možnost, vyplněnou:
najít /cesta -typ d -exec chmod 0755 "{}" \;Nebo použijte možnost -print0a -0umožní vám zpracovat argumenty obsahující mezery a uvozovky:
najít /cesta -typ d -tisk0 | xargs -0 chmod 0755Vyhledejte všechny soubory php.ini v aktuálním adresáři a nahraďte text v každém nalezeném souboru pomocí příkazu sed .
nalézt. -name 'php.ini' -exec sed -i 's/log_errors = Off/log_errors = On/g' "{}" \;Komplexní vyhledávání v několika typech souborů a náhrady textu v každém z nich, z aktuálního adresáře a níže.
nalézt. -regex ".*\.\(php\|js\|css\)" -exec sed -i 's/\/bitrix\/templates\//\/local\/templates\//g' "{} " \;Najděte a vypište soubory v celém souborovém systému, které byly upraveny na poslední chvíli:
najít / -mmin -1 -tiskNajděte a vypište soubory v celém souborovém systému, které byly upraveny před více než 31 dny:
najít / -mtime +31 -tiskNajděte a vypište soubory v celém systému souborů, jejichž velikost je větší než 100 MB:
najít / -velikost +100M -tiskV tomto příkladu se vyhledávání provádí v souborech vlastněných uživatelem jménem ilya
nalézt. -uživatel ilyaHloubka vyhledávání je relativní k adresáři uvedenému v argumentu příkazu.
Spustí vyhledávání ve složce /var/www, ale ne hlouběji /var/www/*/*/*/*.
najdi /var/www -maxdepth 4 -name 'restore.php'Vyhledá soubory v zadaných adresářích.
find /var/spool/postfix/ { odloženo,aktivní,maildrop,příchozí } / -type fVyhledá soubory php v aktuálním adresáři, kromě index.php
nalézt. -jméno "*.php" ! -jméno "index.php"Odstraní všechny soubory restore.phpz aktuálního adresáře až do 4 úrovní vnoření vzhledem k argumentu příkazového řádku
Spustí vyhledávání ve složce /var/www, ale ne hlouběji /var/www/*/*/*/*a odstraní všechny restore.phpnalezené soubory.
najít /var/www -maxdepth 4 -name 'restore.php' -exec rm -r {} \;Pokud během vyhledávání dojde k chybě (například neexistuje přístup pro čtení z adresáře), výstup příkazu bude méně informativní. Přesměrujte výstup STDERR do /dev/null .
find / -name 'secret.keys' -print 2 >/dev/nullMůžete také použít jednu z následujících možností:
find / -name "název souboru k hledání" |& grep -v 'Povolení odepřeno' find / -name "název souboru, který hledáte" |& grep -v 'Povolení odepřeno'
MS-DOS a Windows | Běžné příkazy|
---|---|
| |
Viz také: Seznam příkazů DOS Seznam příkazů operačního systému Microsoft |