2010-12-28 17:42:34 +0000 2010-12-28 17:42:34 +0000
133
133

¿Cómo encuentro un archivo por nombre de archivo en el terminal de Mac OSX?

Quiero encontrar un archivo en mi Macbook con el nombre de archivo: abc.dmg. He intentado usar Spotlight, pero no lo encuentra. Cuando intenté encontrar, y usé: find -name abc.dmg -path /, me dieron errores.

¿Cuál es la sintaxis apropiada para encontrar un archivo por nombre de archivo con el comando find en una terminal de Mac OSX?

Respuestas (7)

182
182
182
2010-12-28 17:45:50 +0000

En su forma más simple, find toma un parámetro: el camino. En su forma realmente útil, toma el camino seguido por el criterio de estrechamiento.

Por lo tanto, usted quiere:

  • find (el programa)
  • / (el camino), y
  • -name abc.dmg (el criterio).
find / -name abc.dmg
26
26
26
2016-10-27 14:11:10 +0000

find . -name '*.csv' por ejemplo, trabajó para mí con los comodines. OP también podría usar find . -name '*.dmg' para revisar su directorio actual, asumiendo que estuviera en /.

10
10
10
2010-12-28 19:21:39 +0000

El comando mdfind utiliza la base de datos de Spotlight http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/mdfind.1.html

6
6
6
2010-12-28 17:44:14 +0000

Puedes usar el comando locate.

locate abc.dmg
3
3
3
2010-12-28 22:53:12 +0000

La forma más sencilla (que estoy seguro de que ya has probado, pero oye, déjame añadirlo al hilo de todos modos) es introducir abc.dmg en el cuadro de búsqueda en la parte superior derecha de cualquier ventana del buscador, y luego seleccionar “Nombre de archivo” en las opciones de la barra de búsqueda que aparece.

No es necesario el terminal.

Recuerda también que Spotlight sólo indexa los directorios especificados en el panel de control de Spotlight y abc. dmg puede no estar en uno de esos directorios.

Corrígeme si me equivoco, pero creo que el comando de búsqueda necesita saber qué salida:

find / -name abc.dmg -print

…debe imprimir cualquier resultado a la terminal (incluyendo errores de permiso).

Si no quiere errores de permiso y quiere buscar en otros directorios de usuarios entonces:

sudo find / -name abc.dmg -print
2
2
2
2018-02-09 04:28:07 +0000

Puede utilizar las siguientes funciones de la línea de comandos para encontrar y abrir rápidamente el archivo correspondiente. Me parece más fácil que escribir una larga cadena de consulta en la ventana de los focos.

Añade las siguientes funciones en ~/.bash_aliases.

# find any item matching search query in file name
spot(){
  mdfind "kMDItemDisplayName=='*$1*'cd";
}

# restrict to files under (recursive) a specific path 
findpaper(){
    mdfind -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd";
}

# default to open the first entry unless 2nd positional argument is given
openpaper(){
    FILEID=$(printf "%sp" ${2:-1})

    open "$(mdfind -name -onlyin "/Users/foo/articles" "kMDItemDisplayName=='*$1*'cd" | sed -n "${FILEID}")"

}

Ahora, o bien source ~/.bash_aliases o abre una nueva terminal de funciones de carga. Para buscar archivos con palabras, pastel y 2016 en cualquier parte del nombre del archivo, haga

spot pie*2016 #or
spot 2016*pie

No hay necesidad de anexar o añadir * a su consulta como patrón de búsqueda, '*$1*' ya etiqueta la entrada de comodín al principio y al final de su consulta. El cd adicional es para las mayúsculas y minúsculas e ignora las marcas diacríticas, por ejemplo, fred devolverá ambos, Frédéric y FrEDeric.

findpaper restringirá la búsqueda a los resultados bajo una ruta específica (recursiva) mientras que openpaper pie*201 abrirá un resultado de búsqueda (o el primero de múltiples resultados) o openpaper pie*201 3 abrirá la tercera entrada de resultados. Para evitar que se abran scripts bash u otros archivos no documentales, puede restringir el contenido del archivo mediante atributos de búsqueda adicionales. Consulte Sintaxis de expresión de consulta de metadatos de archivos y https://ss64.com/osx/mdfind.html para utilizar otros operadores de búsqueda.

0
0
0
2019-06-09 11:50:48 +0000

Captura una lista de cada archivo de tu disco como root desde /

sudo find / &> ~/file-list.txt
sudo chown $(whoami) ~/file-list.txt

Catar el archivo completo a través de grep para buscar en toda la unidad:

cat ~/file-list.txt | grep abc.dmg

Usar expresiones regulares para mostrar sólo archivos .jpg y .dmg:

cat ~/file-list.txt | grep -E "(\.dmg|\.jpg)"

Resultado:

Applications/Visualisations/CurvedSpaces-forMac.app/Contents/Resources/Textures/paper.jpg

…etc. Desafortunadamente también capturará todos los discos montados, así que lo mejor es expulsar los de la Máquina del Tiempo que tienen muchos enlaces. Así que en otra ventana ejecuto watch tail -n 10 ~/file-list.txt que me muestra dónde está mi cobarde hacker!