-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