change - bash command
¿Por qué**** no encuentra nada? (3)
Estoy buscando archivos de scripts de shell instalados en mi sistema, pero find does not work:
$ find /usr -name *.sh
Pero sé que hay un montón de secuencias de comandos por ahí. Por ejemplo:
$ ls /usr/local/lib/*.sh
/usr/local/lib/tclConfig.sh
/usr/local/lib/tkConfig.sh
¿Por qué no encuentra trabajo?
En algunos sistemas (Solaris, por ejemplo), no hay acción predeterminada, por lo que debe agregar el comando -print.
find /usr -name ''*.foo'' -print
Para encontrar archivos en sus discos, utilice la opción "localizar" que es instantánea (busca en un índice construido diariamente) su ejemplo sería:
locate ''/usr*.sh''
Prueba a citar el comodín:
$ find /usr -name /*.sh
o:
$ find /usr -name ''*.sh''
Si tiene un archivo que coincide con * .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 comando find se expandiría a:
$ find /usr -name tkConfig.sh
que solo encontraría archivos llamados tkConfig.sh. Si tenía más de un archivo que coincida con * .sh , obtendría un error de sintaxis de find :
$ cd /usr/local/lib
$ find /usr -name *.sh
find: bad option tkConfig.sh
find: path-list predicate-list
De nuevo, la razón 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. find normalmente no sigue los enlaces, por lo que puede necesitar la opción -follow :
$ find /usr -follow -name ''*.sh''