El -maxdepth
la opción debe estar antes del -name
opción, como a continuación.,
find . -maxdepth 1 -name "string" -print
Usa find
:
find . -maxdepth 1 -name "*string*" -print
Encontrará todos los archivos en el directorio actual (eliminar maxdepth 1
si lo quiere recursivo) que contiene "cadena" y lo imprimirá en la pantalla.
Si desea evitar un archivo que contenga ':', puede escribir:
find . -maxdepth 1 -name "*string*" ! -name "*:*" -print
Si quieres usar grep
(pero creo que no es necesario en la medida en que no desee verificar el contenido del archivo) puede usar:
ls | grep touch
Pero, repito, find
es una solución mejor y más limpia para su tarea.
Use grep de la siguiente manera:
grep -R "touch" .
-R
significa recursivo. Si prefiere no ir a los subdirectorios, sáltelo.
-i
significa "ignorar caso". También puede encontrar que vale la pena intentarlo.
find $HOME -name "hello.c" -print
Esto buscará todo el $HOME
(es decir, /home/username/
) system para cualquier archivo llamado "hello.c" y mostrar sus rutas:
/Users/user/Downloads/hello.c
/Users/user/hello.c
Sin embargo, no coincidirá con HELLO.C
o HellO.C
. Para hacer coincidir las mayúsculas y minúsculas, pase el -iname
opción de la siguiente manera:
find $HOME -iname "hello.c" -print
Salidas de muestra:
/Users/user/Downloads/hello.c
/Users/user/Downloads/Y/Hello.C
/Users/user/Downloads/Z/HELLO.c
/Users/user/hello.c
Pase el -type f
opción para buscar solo archivos:
find /dir/to/search -type f -iname "fooBar.conf.sample" -print
find $HOME -type f -iname "fooBar.conf.sample" -print
El -iname
funciona con el comando de búsqueda de la versión GNU o BSD (incluido OS X). Si su versión del comando de búsqueda no es compatible con -iname
, pruebe la siguiente sintaxis usando grep
comando:
find $HOME | grep -i "hello.c"
find $HOME -name "*" -print | grep -i "hello.c"
O prueba
find $HOME -name '[hH][eE][lL][lL][oO].[cC]' -print
Salidas de muestra:
/Users/user/Downloads/Z/HELLO.C
/Users/user/Downloads/Z/HEllO.c
/Users/user/Downloads/hello.c
/Users/user/hello.c