change bash unix shell ksh

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''