-maxdepth možnost by měla být před -name možnost, jako níže.,
find . -maxdepth 1 -name "string" -print
Použijte find :
find . -maxdepth 1 -name "*string*" -print
Najde všechny soubory v aktuálním adresáři (smažte maxdepth 1 pokud chcete, aby byl rekurzivní) obsahující „řetězec“ a vytiskne jej na obrazovku.
Pokud se chcete vyhnout souboru obsahujícímu ':', můžete napsat:
find . -maxdepth 1 -name "*string*" ! -name "*:*" -print
Pokud chcete použít grep (ale myslím, že to není nutné, pokud nechcete kontrolovat obsah souboru), můžete použít:
ls | grep touch
Ale opakuji, find je lepší a čistší řešení pro váš úkol.
Použijte grep následovně:
grep -R "touch" .
-R znamená opakování. Pokud nechcete jít do podadresářů, přeskočte to.
-i znamená "ignorovat velikost písmen". Možná zjistíte, že to také stojí za vyzkoušení.
find $HOME -name "hello.c" -print
Tím se prohledá celých $HOME (tj. /home/username/ ) systém pro všechny soubory s názvem „hello.c“ a zobrazit jejich názvy:
/Users/user/Downloads/hello.c
/Users/user/hello.c
Neodpovídá však HELLO.C nebo HellO.C . Aby se shodovaly, nerozlišují se malá a velká písmena, předejte -iname možnost takto:
find $HOME -iname "hello.c" -print
Ukázkové výstupy:
/Users/user/Downloads/hello.c
/Users/user/Downloads/Y/Hello.C
/Users/user/Downloads/Z/HELLO.c
/Users/user/hello.c
Předejte -type f možnost vyhledávat pouze soubory:
find /dir/to/search -type f -iname "fooBar.conf.sample" -print
find $HOME -type f -iname "fooBar.conf.sample" -print
-iname funguje buď na příkazu hledání verze GNU nebo BSD (včetně OS X). Pokud vaše verze příkazu find nepodporuje -iname , zkuste následující syntaxi pomocí grep příkaz:
find $HOME | grep -i "hello.c"
find $HOME -name "*" -print | grep -i "hello.c"
NEBO zkuste
find $HOME -name '[hH][eE][lL][lL][oO].[cC]' -print
Ukázkové výstupy:
/Users/user/Downloads/Z/HELLO.C
/Users/user/Downloads/Z/HEllO.c
/Users/user/Downloads/hello.c
/Users/user/hello.c