Expansión interna con el comando buscar y carácter comodín

Expansión interna con el comando buscar y carácter comodín

Todavía estoy aprendiendo la línea de comando y tengo problemas para comprender completamente el uso del comodín dentro del comando de búsqueda.

Estoy trabajando en el directorio usuario/temp y uso el comando de búsqueda de la siguiente manera para buscar todos los archivos .txt:

find . -name *.txt -print

Esto me da el error:

find: unknown primary or operator.

Sé que necesitas usar comillas simples *.txtpara escapar de la expansión y obtener el resultado deseado; sin embargo, no entiendo por qué es necesario hacer esto.

Leí que hay que escapar *para que findhaga la expansión internamente. Estoy confundido porque pensé que usar comillas simples *haría que la línea de comando no lo interpretara como un carácter especial, entonces, ¿cómo se lleva a cabo la expansión?

Respuesta1

Hay 2 partes aquí que podrían intentar expandir *: el shell cuando invoca findo findmientras procesa/usa sus argumentos.

Si no lo pone entre comillas simples, el shell lo expandirá, por lo que si tiene a.txt y b.txt en el directorio actual, su línea de comando se expandirá desde

find . -name *.txt -print

a

find . -name a.txt b.txt -print

que no es un findcomando válido

Si lo pone entre comillas simples, le dirá al shell que lo deje en paz, por lo que findobtendrá la cadena *.txtcomo argumento -namey la usará cuando coincida con nombres potenciales.

Respuesta2

Puede intentar poner entre comillas dos veces el nombre del archivo.

encontrar . -nombre "*.txt" -imprimir

Eso funciona en mi sistema (Debian 8)

información relacionada