Pregunta

Estoy buscando archivos de scripts de shell instalados en mi sistema, pero encontrar no funciona:

$ find /usr -name *.sh

Pero sé que hay un montón de guiones por ahí.Por ejemplo:

$ ls /usr/local/lib/*.sh
/usr/local/lib/tclConfig.sh  
/usr/local/lib/tkConfig.sh

¿Por qué no encontrar ¿trabajar?

¿Fue útil?

Solución

Intente citar el comodín:

$ find /usr -name \*.sh

o:

$ find /usr -name '*.sh'

Si tiene un archivo que coincide *.sh en el directorio de trabajo actual, el comodín se expandirá antes de que find lo vea.Si tiene un archivo llamado tkConfig.sh en su directorio de trabajo, el encontrar El comando se expandiría a:

$ find /usr -name tkConfig.sh

que solo encontrará archivos llamados tkConfig.sh.Si tuviera más de un archivo que coincida *.sh, obtendrías un error de sintaxis de encontrar:

$ cd /usr/local/lib
$ find /usr -name *.sh
find: bad option tkConfig.sh
find: path-list predicate-list

Nuevamente, el motivo es que el comodín se expande a ambos archivos:

$ find /usr -name tclConfig.sh tkConfig.sh

Citar el comodín evita que se expanda prematuramente.

Otra posibilidad es que /usr o uno de sus subdirectorios sea un enlace simbólico. encontrar normalmente no sigue enlaces, por lo que es posible que necesites el -seguir opción:

$ find /usr -follow -name '*.sh'

Otros consejos

En algunos sistemas (Solaris, por ejemplo), no existe una acción predeterminada, por lo que es necesario agregar el comando -print.

find /usr -name '*.foo' -print

Para encontrar archivos en sus discos, inclínese por usar "localizar" en su lugar que sea instantáneo (busca en un índice construido diariamente) tu ejemplo sería:

locate '/usr*.sh'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top