Il -maxdepth
l'opzione dovrebbe essere prima del -name
opzione, come di seguito.,
find . -maxdepth 1 -name "string" -print
Usa find
:
find . -maxdepth 1 -name "*string*" -print
Troverà tutti i file nella directory corrente (cancella maxdepth 1
se lo vuoi ricorsivo) contenente "stringa" e lo stamperà sullo schermo.
Se vuoi evitare file contenenti ':', puoi digitare:
find . -maxdepth 1 -name "*string*" ! -name "*:*" -print
Se vuoi usare grep
(ma penso che non sia necessario se non vuoi controllare il contenuto del file) puoi usare:
ls | grep touch
Ma, ripeto, find
è una soluzione migliore e più pulita per il tuo compito.
Usa grep come segue:
grep -R "touch" .
-R
significa ricorrenza. Se preferisci non entrare nelle sottodirectory, saltalo.
-i
significa "ignora maiuscole e minuscole". Potresti scoprire che vale la pena provare anche questo.
find $HOME -name "hello.c" -print
Questo cercherà l'intero $HOME
(es. /home/username/
) per tutti i file denominati "ciao.c" e visualizzare i loro percorsi:
/Users/user/Downloads/hello.c
/Users/user/hello.c
Tuttavia, non corrisponderà a HELLO.C
o HellO.C
. Per trovare la corrispondenza non viene fatta distinzione tra maiuscole e minuscole, passare -iname
opzione come segue:
find $HOME -iname "hello.c" -print
Risultati di esempio:
/Users/user/Downloads/hello.c
/Users/user/Downloads/Y/Hello.C
/Users/user/Downloads/Z/HELLO.c
/Users/user/hello.c
Passa il -type f
opzione per cercare solo i file:
find /dir/to/search -type f -iname "fooBar.conf.sample" -print
find $HOME -type f -iname "fooBar.conf.sample" -print
Il -iname
funziona su GNU o BSD (incluso OS X) version find comando. Se la tua versione del comando find non supporta -iname
, prova la seguente sintassi utilizzando grep
comando:
find $HOME | grep -i "hello.c"
find $HOME -name "*" -print | grep -i "hello.c"
OPPURE prova
find $HOME -name '[hH][eE][lL][lL][oO].[cC]' -print
Risultati di esempio:
/Users/user/Downloads/Z/HELLO.C
/Users/user/Downloads/Z/HEllO.c
/Users/user/Downloads/hello.c
/Users/user/hello.c