¿Está bien que la búsqueda muestre una doble barra diagonal?

¿Está bien que la búsqueda muestre una doble barra diagonal?

¿Es un error que, cuando obtengo find ./path/here/:

./path/here//foo
./path/here//bar

Sé que findquiere que especifique la ruta sin la barra diagonal, pero seguramente puede detectar la ruta que me deja al completar tabulaciones y ajustar su salida en consecuencia. ¿Hay alguna razón por la que no es así?

Respuesta1

Técnicamente, es un error, porqueestados POSIXeso

todos los nombres de ruta para otros archivos encontrados en la jerarquía consistirán en la concatenación del operando de ruta actual, una <barra>si el operando de la ruta actual no termina en unoy el nombre del archivo relativo al operando de ruta

Perola doble barra no hace ninguna diferencia, entonces ./path/here//fooy ./path/here/fooson siempre el mismo archivo. (Una doble barra hace una diferencia si está al comienzo del camino en algunas variantes de Unix. Si la suya lo hace, es de esperar que findtrate este caso de manera especial).

Respuesta2

Para que conste, una razón por la que se podría usar find some/dir/en lugar de find some/dires cuando some/diren realidad es un enlace simbólico a un directorio y desea findbuscar archivos en el directorio al que apunta ese enlace simbólico.

Pero, en ese caso, hay una alternativa mejor:

find -H some/dir

-Hes una opción admitida por algunas utilidades POSIX ( ls, cp, chmod...) que le indica a la utilidad que siga los enlaces simbólicos pasados ​​como argumentos (y solo esos, que no deben confundirse con -L/ -followque provoca findque se sigancadaenlace simbólico, los pasados ​​como argumentos pero también los encontrados durante el recorrido del directorio).

Eso todavía no es funcionalmente equivalente al find some/dir/caso en el que some/diren realidad no es un directorio. En ese caso, find some/dir/fallaría con unNo es un directorioerror while find -H some/direnumeraría ese archivo que no es de directorio.

información relacionada