Comando “buscar” de Mac Terminal: ¿Qué significa una barra oblicua en la salida del resultado?

8

Utilizo el comando de búsqueda para buscar en estructuras de directorios grandes y anidadas.

En el resultado-salida a veces se incluye una doble barra (//).

Ejemplo (después de "Descargas"):

#> find ~/Downloads/ -iregex ".*some.*"
/Users/michael/Downloads//subDirectory/some_file.pdf

Primero pensé que marcaría el directorio de trabajo actual. Pero ese no es el caso.

¿Cuál es el significado de esta doble barra?

Por lo general, copio el resultado en el portapapeles, cambio al buscador. Entonces "Cambia" + "comando" + "g" y pega la ruta (hasta el archivo) en el cuadro. Para que se abra el directorio que contiene.

Funciona bien. Pero la barra doble que tengo que eliminar manualmente.

Por lo tanto: ¿Cómo puedo evitarlo?

    
pregunta mizech 14.08.2016 - 09:00

2 respuestas

16

find es más bien literal. Cuando le dices que busque dentro de "~ / Downloads /", usa eso (incluida la barra diagonal) como prefijo para lo que encuentre. Como hay una barra innecesaria e irrelevante al final de la ruta que le diste, terminas con una barra adicional innecesaria e irrelevante en la salida.

Solución: elimine la "/" final del directorio de búsqueda:

#> find ~/Downloads/ -iregex ".*some.*"
/Users/michael/Downloads//subDirectory/some_file.pdf
#> find ~/Downloads -iregex ".*some.*"
/Users/michael/Downloads/subDirectory/some_file.pdf
    
respondido por el Gordon Davisson 14.08.2016 - 09:11
4
  

¿Cuál es el significado de esta barra doble?

Significa que estás usando un extraño hallazgo de BSD.

  

¿Cómo puedo evitarlo?

De hecho, puede omitir la barra diagonal final en su comando original, pero como se agrega automáticamente a través de la finalización de la pestaña (que definitivamente debería hacer el mayor uso posible), & dado que la barra diagonal final se usa en innumerables lugares en otros lugares para asegurarse de que está tratando con un directorio y no con un nombre de archivo, omitirlo es contraintuitivo y amp; tonto.

En cambio, sugiero hacer una de estas otras cosas:

a) Haga una envoltura para encontrar las tuberías a sed: | sed 's @ // @ / @'

b) Instale los searchutils de GNU con 'brew install findutils' y luego use 'gfind' directamente, el alias 'find' a 'gfind', o agregue / usr / local / opt / findutils / libexec / gnubin a su ruta ( que también agrega GNU findutils "localizar", "updatedb", & "xargs").

c) Cambie a un sistema operativo GNU / Linux adecuado que no haya tenido este problema (y otros miles) en primer lugar. : p

    
respondido por el Jan Kyu Peblik 23.09.2016 - 20:35

Lea otras preguntas en las etiquetas