grep se utiliza para buscar dentro de un archivo para ver si alguna línea coincide con una expresión regular dada. Sin embargo, tengo esta situación - quiero escribir una expresión regular que coincida con el nombre del archivo en sí (y no el contenido del archivo). Lo ejecutaré desde el directorio raíz del sistema, para encontrar todos los archivos que coincidan con la expresión regular.
Por ejemplo, si quiero encontrar todos los ficheros de formularios VB que empiecen por "f" y terminen por .frm, usaré la expresión regular -
"f[[:alnum:]]*\.frm"
¿Puede grep hacer esto? Si no, ¿hay alguna utilidad que me permita hacer esto? Gracias.
Como ha dicho Pablo, tienes que usar find
en lugar de grep
, pero no es necesario canalizar find
a grep
. find
tiene esa funcionalidad incorporada:
find . -regex 'f[[:alnum:]]\.frm'
find
es un programa muy potente para buscar archivos por nombre y soporta la búsqueda por tipo de archivo, la limitación de profundidad, la combinación de diferentes términos de búsqueda con operaciones booleanas, y la ejecución de comandos arbitrarios en los archivos encontrados. Consulte la página man de find para obtener más información.
find -iname "file_name"
Syntax :-
find -type type_descriptor file_name_here
tipos_descriptores:-
f: archivo regular
d: directorio
l: enlace simbólico
c: dispositivos de caracteres
b: dispositivos de bloque