Estoy tratando de localizar todas las copias de example.filenameen mi servidor FreeBSD. ¿Cuál es la forma mejor / más fácil / más eficiente de hacer esto?
otros indicadores de "búsqueda" que pueden ser apropiados, según la necesidad: -tipo f (no se molestará con directorios o enlaces simbólicos con el mismo nombre) -ls (para mostrar detalles como el tamaño del archivo, por ejemplo, si los archivos tienen el mismo nombre pero diferentes contenidos)
Zac Thompson
19
locate filename
Mucho más rápido que find, si está ejecutando el servicio de localización, y solo encuentra archivos que existían en el momento en que se updatedbejecutó por última vez (generalmente la noche antes del control de un trabajo cron).
Usted puede ejecutar updatedbcon la mano, pero que es aún más lento que el findCletus sugiere , y requiere de la raíz. A veces actualizo la base de datos a mano después de instalar un montón de cosas nuevas.
Localizar solo funciona si tiene el servicio en ejecución para construir el db de localización (olvide cómo se llama). También puede sufrir un retraso de tiempo (ya que el archivo que está buscando puede haberse agregado desde la última compilación).
cletus
Ediciones y comentarios cruzados en el cable. Frio. Usted tiene, por supuesto, razón en ambos aspectos.
dmckee --- ex-gatito moderador
44
Si te encuentras haciendo find /o en un árbol grande más de una vez a la semana, locateprobablemente valga la pena ejecutar el servicio, porque locate(1)es mucho más rápido.
Drew Stephens
@cletus Running sudo periodic weeklyactualiza la locatebase de datos. Ejecútelo después de cualquier instalación o descarga que pueda contener los archivos que desee.
Basil Bourque
2
Si tienes instalado localizar (también conocido como slocate), entonces
locate example.filename
localizar ejecuta un trabajo cron todas las noches que reindexa todos los archivos en su máquina. No siempre está actualizado por ese motivo.
Como otros mencionaron, locatees la forma más rápida de encontrar un archivo. Este comando utiliza un índice precompilado de los nombres de archivo y carpeta. Se busca en esta base de datos de nombres, en lugar de rastrear su sistema de archivos.
locate example.filename
Para ser insensible a mayúsculas y minúsculas, agregue -i.
locate -i eXAmPle.FileName
Actualizar locatebase de datos
La base de datos utilizada por locatedebe estar actualizada. Después de realizar una instalación o descarga que puede contener el archivo deseado, debe actualizar la locatebase de datos.
La locatebase de datos eventualmente será actualizada automáticamente por su sistema FreeBSD. Hay un conjunto semanal de tareas que incluye esta tarea. Estas tareas se enumeran en el /etc/periodic/weekly/310.locateguión.
La forma más fácil y segura de forzar la actualización temprana de la locatebase de datos es forzar el conjunto semanal de tareas para que se haga ahora.
sudo periodic weekly
O incluso podría obligar a realizar todas las tareas habituales. Es posible que desee hacer esto inmediatamente después de configurar un nuevo sistema FreeBSD.
sudo periodic daily weekly monthly
Si utiliza otras vías para actualizar la locatebase de datos, es posible que reciba un mensaje sobre la inseguridad, revelando los nombres de todos los archivos de su sistema a cualquier usuario en el sistema FreeBSD. Usar la periodicruta evita este problema.
Sí, eso coincide con todo y luego tira todo excepto el nombre que estabas buscando. En su lugar, simplemente puede hacer 'find -name "example.filename"' que hace exactamente lo mismo sin imprimir primero todo y sin ejecutar un proceso grep adicional.
Respuestas:
fuente
Mucho más rápido que
find
, si está ejecutando el servicio de localización, y solo encuentra archivos que existían en el momento en que seupdatedb
ejecutó por última vez (generalmente la noche antes del control de un trabajo cron).Usted puede ejecutar
updatedb
con la mano, pero que es aún más lento que elfind
Cletus sugiere , y requiere de la raíz. A veces actualizo la base de datos a mano después de instalar un montón de cosas nuevas.fuente
find /
o en un árbol grande más de una vez a la semana,locate
probablemente valga la pena ejecutar el servicio, porquelocate(1)
es mucho más rápido.sudo periodic weekly
actualiza lalocate
base de datos. Ejecútelo después de cualquier instalación o descarga que pueda contener los archivos que desee.Si tienes instalado localizar (también conocido como slocate), entonces
localizar ejecuta un trabajo cron todas las noches que reindexa todos los archivos en su máquina. No siempre está actualizado por ese motivo.
fuente
A veces desea buscar archivos en un nivel de directorio específico. En este caso, puede ser conveniente utilizar comodines de shell:
Obviamente, esto solo funciona si tiene una estructura de directorio rígida.
fuente
locate
Como otros mencionaron,
locate
es la forma más rápida de encontrar un archivo. Este comando utiliza un índice precompilado de los nombres de archivo y carpeta. Se busca en esta base de datos de nombres, en lugar de rastrear su sistema de archivos.Para ser insensible a mayúsculas y minúsculas, agregue
-i
.Actualizar
locate
base de datosLa base de datos utilizada por
locate
debe estar actualizada. Después de realizar una instalación o descarga que puede contener el archivo deseado, debe actualizar lalocate
base de datos.La
locate
base de datos eventualmente será actualizada automáticamente por su sistema FreeBSD. Hay un conjunto semanal de tareas que incluye esta tarea. Estas tareas se enumeran en el/etc/periodic/weekly/310.locate
guión.La forma más fácil y segura de forzar la actualización temprana de la
locate
base de datos es forzar el conjunto semanal de tareas para que se haga ahora.O incluso podría obligar a realizar todas las tareas habituales. Es posible que desee hacer esto inmediatamente después de configurar un nuevo sistema FreeBSD.
Si utiliza otras vías para actualizar la
locate
base de datos, es posible que reciba un mensaje sobre la inseguridad, revelando los nombres de todos los archivos de su sistema a cualquier usuario en el sistema FreeBSD. Usar laperiodic
ruta evita este problema.fuente
Si tiene la base de datos de localización actualizada, simplemente:
fuente
A veces hago
probablemente enormemente ineficiente sin embargo.
fuente