Intento probar la versión GNU de locate
comando. En primer lugar, tengo que crear la base de datos así :
sudo gupdatedb --prunepaths=/Volumes --output=$HOME/locatedb_gupdatedb
Lamentablemente, 1 minuto después de lanzar el comando, sigo obteniendo el siguiente error :
gfind: failed to read file names from file system at or below '/': No such file or directory
¿No entiendo de dónde puede venir este error?
ACTUALIZACIÓN 1: He sustituido gfind
por find
y el camino correcto de find
que es /usr/bin/
. Desgraciadamente, me salen mensajes de error tan embarazosos como este cuando lanzo el gupdatedb
comando como este :
sudo gupdatedb --prunepaths='/private/tmp /private/var/folders /private/var/tmp */Backups.backupdb /Volumes /System' --output=$HOME/locatedb_gupdatedb
Aquí los mensajes de error :
find: /System/Volumes/Data/.Spotlight-V100: No such file or directory
find: /System/Volumes/Data/.PKInstallSandboxManager: No such file or directory
find: /System/Volumes/Data/.PKInstallSandboxManager-SystemSoftware: No such file or directory
find: /System/Volumes/Data/.cleverfiles: No such file or directory
find: /System/Volumes/Data/mnt: No such file or directory
find: /System/Volumes/Data/.DocumentRevisions-V100: No such file or directory
etc ...
Intenté modificar en /usr/local/Cellar/findutils/4.7.0/libexec/bin/gupdatedb
la opción :
: ${FINDOPTIONS="2 > /dev/null"}
Pero el problema es que esta opción se pone delante del comando find
no al final, por lo que no es correcto en lo que sigue del archivo.
Dado el hecho de que hay una gran cantidad de find
comandos después en el script, no puedo añadir manualmente cada vez que el 2 > /dev/null
opción de terminal.
Cualquiera podría ver cómo suprimir todos estos mensajes de error de find
al lanzar un gupdatedb
¿comando?
ACTUALIZACIÓN 2: Finalmente logré crear una base de datos con gupdatedb (versión GNU de MacOS updatedb
) haciendo :
sudo gupdatedb --prunepaths='/private/tmp /private/var/folders /private/var/tmp */Backups.backupdb /System /Volumes' --output=$HOME/locatedb_gupdatedb
El problema ahora es que, cuando hago una búsqueda en una subcadena de un archivo o directorio, la información parece estar duplicada en los resultados ( sub_string
es simplemente la parte del nombre de un archivo o directorio) :
Por ejemplo, si hago un : glocate -d ~/locatedb_gupdatedb sub_string
Entonces, tengo resultados duplicados como :
/System/Volumes/Data/Users/fab/sub_string.dat
/Users/fab/sub_string.dat
No sé cómo excluir ' /System/Volumes/Data/
' de estos resultados : sin embargo, he especificado bien en --prunepaths
opción el directorio System
por qué no se tiene en cuenta en la base de datos creada por gupdatedb
?
O tal vez debería realizar un :
sudo gupdatedb --prunepaths='/private/tmp /private/var/folders /private/var/tmp */Backups.backupdb /System/Volumes/Data /Volumes' --output=$HOME/locatedb_gupdatedb
??
Cualquier ayuda es bienvenida para excluir este directorio
/System/Volumes/Data
de la base de datos de indexación.
ACTUALIZACIÓN 3: Este es un ejemplo de generar rápidamente una base de datos con updatedb on Debian 10 Buster
. Pocas modificaciones del uso normal se han hecho entre las marcas de tiempo de los 2 comandos updatedb
.
Así que concluyo que realmente hay una diferencia entre la implementación de GNU/MacOS y GNU/Linux.
Cualquier explicación es bienvenida.