tag picard musicbrainz mac kid3 español editar easytag linux macos unix command-line locate

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