linux - mac - musicbrainz picard español
Linux-Encuentra archivos con nombre que contiene cadena (6)
He estado buscando un comando que devolverá los archivos del directorio actual que contienen una cadena en el nombre del archivo. He visto locate
y find
comandos que pueden encontrar archivos que comienzan con algo first_word*
o que terminan con algo *.jpg
.
¿Cómo puedo devolver una lista de archivos que contienen una cadena en el nombre del archivo?
Por ejemplo, si 2012-06-04-touch-multiple-files-in-linux.markdown
era un archivo en el directorio actual.
¿Cómo podría devolver este archivo y otros que contengan la cadena touch
? Usando un comando como find ''/touch/''
La opción -maxdepth
debe estar antes de la opción -name
, como a continuación.,
find . -maxdepth 1 -name "string" -print
Si la cadena está al principio del nombre, puedes hacer esto
$ compgen -f .bash
.bashrc
.bash_profile
.bash_prompt
Use find
:
find . -maxdepth 1 -name "*string*" -print
Encontrará todos los archivos en el directorio actual (elimine maxdepth 1
si lo quiere recursivo) que contenga "cadena" y lo imprimirá en la pantalla.
Si desea evitar el archivo que contiene '':'', 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 quieras verificar el contenido del archivo) puedes usar:
ls | grep touch
Pero, repito, find
una solución mejor y más limpia para su tarea.
Use grep de la siguiente manera:
grep -R "touch" .
-R
significa recurse. Si prefieres no entrar en los subdirectorios, omítalo.
-i
significa "ignorar caso". Es posible que también valga la pena intentarlo.
find $HOME -name "hello.c" -print
Esto buscará todo el sistema $HOME
(es decir, /home/username/
) para cualquier archivo llamado "hello.c" y mostrará sus nombres de ruta:
/Users/user/Downloads/hello.c
/Users/user/hello.c
Sin embargo, no coincidirá con HELLO.C
o HellO.C
. Para hacer coincidir es insensible a mayúsculas y minúsculas, pase la opción -iname
siguiente manera:
find $HOME -iname "hello.c" -print
Resultados de muestra:
/Users/user/Downloads/hello.c
/Users/user/Downloads/Y/Hello.C
/Users/user/Downloads/Z/HELLO.c
/Users/user/hello.c
Pase la opción de -type f
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 en GNU o BSD (incluido OS X) versión find command. Si su versión del comando find no admite -iname
, pruebe la siguiente sintaxis mediante el comando grep
:
find $HOME | grep -i "hello.c"
find $HOME -name "*" -print | grep -i "hello.c"
O tratar
find $HOME -name ''[hH][eE][lL][lL][oO].[cC]'' -print
Resultados de muestra:
/Users/user/Downloads/Z/HELLO.C
/Users/user/Downloads/Z/HEllO.c
/Users/user/Downloads/hello.c
/Users/user/hello.c
grep -R "somestring" | cut -d ":" -f 1