permanently full current linux file unix path

full - show path linux terminal



¿Cómo obtener la ruta completa de un archivo? (30)

En las ventanas puedes: -

  • Mantenga presionada la tecla Mayús y haga clic con el botón derecho en un archivo que le ofrece la opción llamada "Copy as Path"

    Esto copiará la ruta completa del archivo al portapapeles.

En Linux puedes usar el comando: -

  • realpath yourfile para obtener la ruta completa de un archivo como lo sugieren muchos.

¿Hay una manera fácil de imprimir la ruta completa de file.txt ?

file.txt = /nfs/an/disks/jj/home/dir/file.txt

El <command>

dir> <command> file.txt

debería imprimir

/nfs/an/disks/jj/home/dir/file.txt


Cree una función como la de abajo (refleja la ruta absoluta de un archivo con pwd y agrega el archivo al final de la ruta):

abspath() { echo $(pwd "$1")/"$1"; }

Ahora puedes encontrar cualquier ruta de archivo:

abspath myfile.ext


En Mac OSX, sigue los siguientes pasos:

  1. cd en el directorio del archivo de destino.
  2. Escriba cualquiera de los siguientes comandos de terminal.
Terminal

ls "`pwd`/file.txt" echo $(pwd)/file.txt

  1. Reemplace file.txt con su nombre de archivo real.
  2. Presiona enter

En un escenario similar, estoy lanzando un script cshell desde otra ubicación. Para establecer la ruta absoluta correcta del script para que se ejecute solo en el directorio designado, estoy usando el siguiente código:

set script_dir = `pwd`/`dirname $0`

$0 almacena la cadena exacta de cómo se ejecutó el script.

Por ejemplo, si el script se inició así: $> ../../test/test.csh , $script_dir contendrá /home/abc/sandbox/v1/../../test


Esto es ingenuo, pero tuve que hacerlo para ser compatible con POSIX. Requiere permiso para ingresar al directorio del archivo.

#!/bin/sh if [ ${#} = 0 ]; then echo "Error: 0 args. need 1" >&2 exit 1 fi if [ -d ${1} ]; then # Directory base=$( cd ${1}; echo ${PWD##*/} ) dir=$( cd ${1}; echo ${PWD%${base}} ) if [ ${dir} = / ]; then parentPath=${dir} else parentPath=${dir%/} fi if [ -z ${base} ] || [ -z ${parentPath} ]; then if [ -n ${1} ]; then fullPath=$( cd ${1}; echo ${PWD} ) else echo "Error: unsupported scenario 1" >&2 exit 1 fi fi elif [ ${1%/*} = ${1} ]; then if [ -f ./${1} ]; then # File in current directory base=$( echo ${1##*/} ) parentPath=$( echo ${PWD} ) else echo "Error: unsupported scenario 2" >&2 exit 1 fi elif [ -f ${1} ] && [ -d ${1%/*} ]; then # File in directory base=$( echo ${1##*/} ) parentPath=$( cd ${1%/*}; echo ${PWD} ) else echo "Error: not file or directory" >&2 exit 1 fi if [ ${parentPath} = / ]; then fullPath=${fullPath:-${parentPath}${base}} fi fullPath=${fullPath:-${parentPath}/${base}} if [ ! -e ${fullPath} ]; then echo "Error: does not exist" >&2 exit 1 fi echo ${fullPath}


Esto funcionó bastante bien para mí. No se basa en el sistema de archivos (un pro / con dependiendo de la necesidad) por lo que será rápido; y, debería ser portátil para la mayoría de cualquier * NIX. Se asume que la cadena pasada es de hecho relativa a la PWD y no a otro directorio.

function abspath () { echo $1 | awk ''/ # Root parent directory refs to the PWD for replacement below /^/././// { sub("^", "./") } / # Replace the symbolic PWD refs with the absolute PWD / /^/./// { sub("^/.", ENVIRON["PWD"])} / # Print absolute paths / /^/// {print} /' }


Esto funciona tanto con Linux como con Mac OSX.

echo $(pwd)$/$(ls file.txt)


Esto funcionará tanto para el archivo como para la carpeta:

getAbsolutePath(){ [[ -d $1 ]] && { cd "$1"; echo "$(pwd -P)"; } || { cd "$(dirname "$1")" || exit 1; echo "$(pwd -P)/$(basename "$1")"; } }


Generalmente:

find `pwd` | grep <filename>

Alternativamente, solo para la carpeta actual:

find `pwd` -maxdepth 1 | grep <filename>


Junto a "readlink -f", otro comando de uso común:

$find /the/long/path/but/I/can/use/TAB/to/auto/it/to/ -name myfile /the/long/path/but/I/can/use/TAB/to/auto/it/to/myfile $

Esto también da la ruta completa y el nombre del archivo en la consola

Fuera del tema: este método solo proporciona enlaces relativos , no absolutos. El comando readlink -f es el correcto.


Lo siguiente usualmente hace el truco:

echo $(cd $(dirname "$1") && pwd -P)/$(basename "$1")


Me gustan muchas de las respuestas ya dadas, pero esto me parece muy útil, especialmente dentro de un script para obtener la ruta completa de un archivo, incluidos los siguientes enlaces simbólicos y referencias relativas, como . y ..

dirname `readlink -e relative/path/to/file`

Lo que devolverá la ruta completa del file desde la ruta raíz hacia adelante. Esto se puede usar en un script para que el script sepa de qué ruta se está ejecutando, lo que es útil en un clon de repositorio que podría estar ubicado en cualquier lugar de una máquina.

basePath=`dirname /`readlink -e $0/``

Luego puedo usar la variable ${basePath} en mis scripts para hacer referencia directamente a otros scripts.

Espero que esto ayude,

Dave


Otra utilidad de Linux, que hace este trabajo:

fname <file>


Para Mac OS X, reemplacé las utilidades que vienen con el sistema operativo y las reemplacé con una versión más nueva de coreutils. Esto le permite acceder a herramientas como readlink -f (para ruta absoluta a archivos) y realpath (ruta absoluta a directorios) en su Mac.

La versión Homebrew agrega una ''G'' (para las herramientas de GNU) delante del nombre del comando, por lo que los equivalentes se convierten en greadlink -f FILE y grealpath DIRECTORY .

Las instrucciones para instalar Coreutils / GNU Tools en Mac OS X a través de Homebrew se pueden encontrar en este artículo de StackExchange .

NB: Los comandos readlink -f y realpath deberían funcionar de forma inmediata para usuarios de Unix que no sean Mac.


Para Mac OS, si solo desea obtener la ruta de un archivo en el buscador, haga clic con el botón control en el archivo y desplácese hacia abajo hasta "Servicios" en la parte inferior. Obtendrá muchas opciones, incluyendo "copiar ruta" y "copiar ruta completa". Al hacer clic en uno de estos se coloca la ruta en el portapapeles.


Para obtener la ruta completa de un archivo:

1) abra su terminal en la carpeta que contiene su archivo , presionando las siguientes teclas del teclado:

CTRL + ALT + T

2) luego escriba "pwd" (acrónimo de P rint name of W orking D irectory):

your@device ~ $ pwd

¡eso es todo amigos!



Puede guardar esto en su "shell.rc" o simplemente ponerlo en la consola

function absolute_path {echo "$ PWD / $ 1"; }

alias ap = "absolute_path"

ejemplo:

ap somefile.txt

dará salida

/home/user/somefile.txt


Puede utilizar esta función. Si el nombre del archivo se proporciona sin una ruta relativa, se asume que está presente en el directorio de trabajo actual:

abspath() { old=`pwd`;new=$(dirname "$1");if [ "$new" != "." ]; then cd $new; fi;file=`pwd`/$(basename "$1");cd $old;echo $file; }

Uso:

$ abspath file.txt /I/am/in/present/dir/file.txt

Uso con ruta relativa:

$ abspath ../../some/dir/some-file.txt /I/am/in/some/dir/some-file.txt

Con espacios en nombre de archivo:

$ abspath "../../some/dir/another file.txt" /I/am/in/some/dir/another file.txt



Si estás en el mismo directorio que el archivo:

ls "`pwd`/file.txt"

Reemplace file.txt con su nombre de archivo de destino.


Supongo que estás usando Linux.

Encontré una utilidad llamada realpath en coreutils 8.15.

realpath realpath /data/ail_data/transformed_binaries/coreutils/test_folder_realpath/realpath


Utilice readlink :

readlink -f file.txt


la forma más fácil que encontré es

for i in `ls`; do echo "`pwd`/$i"; done

funciona bien para mi


Sé que hay una forma más fácil de hacerlo, pero, maldita sea, si puedo encontrarlo ...

jcomeau@intrepid:~$ python -c ''import os; print(os.path.abspath("cat.wav"))'' /home/jcomeau/cat.wav

jcomeau@intrepid:~$ ls $PWD/cat.wav /home/jcomeau/cat.wav


Funciona en Mac, Linux, * nix:

Esto le dará un csv citado de todos los archivos en el directorio actual:

ls | xargs -I {} echo "$(pwd -P)/{}" | xargs | sed ''s/ /","/g''

El resultado de esto se puede copiar fácilmente en una lista de python o en cualquier estructura de datos similar.


echo $(cd $(dirname "$1") && pwd -P)/$(basename "$1")

Esta es una explicación de lo que está sucediendo en la answer @ ZeRemz:

  1. Este script obtiene la ruta relativa como argumento "$1"
  2. Luego obtenemos la parte dirname de esa ruta (puede pasar dir o file a este script): dirname "$1"
  3. Luego colocamos cd "$(dirname "$1") en este directorio relativo
  4. && pwd -P y obtén un camino absoluto para ello. -P opción evitará todos los enlaces simbólicos.
  5. Después de eso, agregamos el nombre base a la ruta absoluta: $(basename "$1")
  6. Como paso final lo hacemos echo .

find $PWD -type f | grep "filename"

o

find $PWD -type f -name "*filename*"


find / -samefile file.txt -print

Encontrará todos los enlaces al archivo con el mismo número de inodo que file.txt

la adición de un indicador -xdev evitará que se crucen los límites del dispositivo ("puntos de montaje"). (Pero esto probablemente no hará que se encuentre nada si la find no se inicia en un directorio en el mismo dispositivo que file.txt )

Tenga en cuenta que find puede informar múltiples rutas para un solo objeto del sistema de archivos, ya que un Inode se puede vincular mediante más de una entrada de directorio, posiblemente incluso usando nombres diferentes. Por ejemplo:

find /bin -samefile /bin/gunzip -ls

Saldrá:

12845178 4 -rwxr-xr-x 2 root root 2251 feb 9 2012 /bin/uncompress 12845178 4 -rwxr-xr-x 2 root root 2251 feb 9 2012 /bin/gunzip


fp () { PHYS_DIR=`pwd -P` RESULT=$PHYS_DIR/$1 echo $RESULT | pbcopy echo $RESULT }

Copia el texto en su portapapeles y muestra el texto en la ventana del terminal.

:)

(Copié parte del código de otra respuesta de desbordamiento de pila, pero ya no puedo encontrar esa respuesta)