
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 *.txt
para 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 find
haga 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 find
o find
mientras 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 find
comando válido
Si lo pone entre comillas simples, le dirá al shell que lo deje en paz, por lo que find
obtendrá la cadena *.txt
como argumento -name
y 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)