Me gustaría determinar la ubicación de un archivo usando la línea de comandos. Yo he tratado:
find . -type f -name "postgis-2.0.0"
y
locate postgis-2.0.0
en vano. ¿Cuál es el comando para determinar el directorio del archivo, dado su nombre?
command-line
directory
find
Sam007
fuente
fuente

locatecomando está bien, solo actualice el ubicaciónb primero, usando el comandoupdatedbpostgis-2.0.0. Por lo general, después de las instalaciones a través de los administradores de paquetes, los ejecutables estarían en una de las$PATHcarpetas, intentewhich postgisver la ubicación. Si no devuelve nada, solo entonces debe buscar manualmente la ubicación del archivo.Respuestas:
Intenta en su
find ~/ -type f -name "postgis-2.0.0"lugar.El uso
.solo buscará en el directorio actual.~/buscará en todo su directorio de inicio (probablemente donde lo descargó). Si lo usówgetcomo root, es posible que pueda estar en otro lugar para poder/buscar en todo el sistema de archivos.Buena suerte
fuente
wgetcomo root, así que/funcionó, graciasLo intentaré:
Los . significa buscar solo en el directorio actual, es mejor buscar todo desde la raíz si realmente no lo sabe. Además, escriba -f significa buscar archivos, no carpetas. Agregar le
sudopermite buscar en todas las carpetas / subcarpetas.Su sintaxis
locatees correcta, pero es posible que deba ejecutarprimero. Sin
locateembargo , por alguna razón, nunca tengo buena suerte .locateutiliza la base de datos de archivos y directorios creados porupdatedb. Entonces, si ha descargado un nuevo archivo, hay más posibilidades de queupdatedbno haya actualizado la base de datos de archivos y directorios. Puede usarsudo updatedbantes de usar ellocateprograma de utilidad.updatedbgeneralmente se ejecuta una vez al día por sí solo en sistemas Linux.fuente
find es una de las herramientas más útiles de Linux / Unix.
Tratar
find . -type d | grep DIRNAMEfuente
Las otras respuestas son buenas, pero creo que omitir
Permission denieddeclaraciones me da respuestas más claras (omitestderrs debido a que no se ejecutasudo):dónde:
/se puede reemplazar con el directorio desde el que desea comenzar su búsquedafpuede reemplazarsedsi está buscando un directorio en lugar de un archivo-inamepuede reemplazarse-namesi desea que la búsqueda distinga entre mayúsculas y minúsculas*s en el término de búsqueda se pueden omitir si no desea los comodines en la búsquedaUna alternativa es:
De esta forma, se devuelven resultados si el término de búsqueda coincide en cualquier lugar de la ruta completa del archivo, por ejemplo
/home/postgis-2.0.0/docs/Readme.txtfuente
-regexe-iregexinterruptores para buscarRegular Expressions, que también encontrarían las rutas mencionadas. La sugerencia de encontrar cualquier elemento que sea un archivo (-type f)grepes más costoso en recursos.Permission deniedsucede cuando el usuario no tiene acceso a archivos o carpetas, el usosudoantes de find permitirá que find vea todos los archivos.-wholenameo en-iwholenamelugar de canalizar agrep.Tratar
find . -name "*file_name*"donde puede cambiar '.' (busque en el Directorio actual) a '/' (busque en todo el sistema) o '~ /' (busque en el Directorio de inicio).
donde puede cambiar "-name" a "-iname" si no desea distinguir entre mayúsculas y minúsculas.
donde puede cambiar " nombre_archivo " (un archivo que puede comenzar y terminar con lo que sea) al nombre exacto del archivo.
fuente
Esto debería simplificar la localización del archivo:
Esto le daría la ruta completa al archivo
Tree enumera el contenido de los directorios en un formato similar a un árbol. el
-fárbol le dice que dé la ruta completa al archivo. Como no tenemos idea de su ubicación o ubicación principal, es bueno buscar desde la raíz del sistema de archivos de forma/recursiva hacia abajo. Luego enviamos la salida a grep para resaltar nuestra palabra,postgis-2.0.0fuente
Si bien el
findcomando es la forma más simple de atravesar recursivamente el árbol de directorios, existen otras formas y, en particular, los dos lenguajes de script que vienen con Ubuntu de manera predeterminada ya tienen la capacidad de hacerlo.golpetazo
bashtiene unaglobstaropción de shell muy agradable , que permite un recorrido recursivo del árbol de directorios. Todo lo que tenemos que hacer es probar si el elemento en la./**/*expansión es un archivo y si contiene el texto deseado:Perl
Perl tiene el módulo Buscar, que permite realizar un recorrido recursivo del árbol de directorios y, a través de una subrutina, realizar acciones específicas sobre ellos. Con un pequeño script, puede atravesar el árbol de directorios, insertar archivos que contienen la cadena deseada en la matriz y luego imprimirlo de la siguiente manera:
Y como funciona:
Pitón
Python es otro lenguaje de script que se usa ampliamente en el mundo de Ubuntu. En particular, tiene un
os.walk()módulo que nos permite realizar la misma acción que antes: recorrer el árbol de directorios y obtener una lista de los archivos que contienen la cadena deseada.Como una línea, esto se puede hacer así:
El guión completo se vería así:
fuente
$ find . -type f | grep IMG_20171225_*Da
./03-05--2018/IMG_20171225_200513.jpgel DOT después del comando
findpara establecer un punto de partida, por lotanto, la carpeta actual,
"canalizada" (= filtrada) a través del filtro de nombre
IMG_20171225_*fuente