¿Cómo puedo listar archivos con su ruta absoluta en linux? [cerrado]


Quiero generar listados de archivos recursivos con rutas completas

/home/ken/foo/bar

Pero por lo que puedo ver, tanto ls como {[3] } solo dan listas de rutas relativas

./foo/bar   (from the folder ken)

Parece un requisito obvio, pero no puedo ver nada en las páginas de manual find o ls.

Author: Yamaneko, 2008-10-29

10 answers

Si le da a find una ruta absoluta para comenzar, imprimirá rutas absolutas. Por ejemplo, para encontrar todo .archivos htaccess en el directorio actual:

find `pwd` -name .htaccess

find simplemente antepone la ruta que se le dio a una ruta relativa al archivo desde esa ruta.

Greg Hewgill también sugirió usar pwd -P si desea resolver enlaces simbólicos en su directorio actual.

 213
Author: Matthew Scharley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:48
readlink -f filename 

Da el camino absoluto completo. pero si el archivo es un enlace simbólico, obtendrá el nombre final resuelto.

 167
Author: balki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-02 04:45:05

Use esto para dirs:

ls -d -1 $PWD/**

Esto para los archivos:

ls -d -1 $PWD/*.*

Esto para todo:

ls -d -1 $PWD/**/*

Tomado de aquí http://www.zsh.org/mla/users/2002/msg00033.html

 94
Author: user431529,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-26 07:07:42

Puede usar

find $PWD 

En bash

 18
Author: Vinko Vrsalovic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-29 09:27:50
ls -d $PWD/*
 11
Author: didi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-15 13:15:50

Si le da al comando find una ruta absoluta, escupirá los resultados con una ruta absoluta. Por lo tanto, desde el directorio Ken si usted fuera a escribir:

Find / home / ken / foo / - name bar-print
(en lugar de la ruta relativa buscar . - barra de nombre-print)

Usted debe obtener:

/ home/ken/foo / bar

Por lo tanto, si desea un ls-l y tiene que devolver la ruta absoluta, solo puede decirle al comando find que ejecute un ls-l en lo que encuentre.

Buscar /home / ken / foo-name bar-exec ls-l {}; \

NOTA: Hay un espacio entre {} y ;

Obtendrás algo como esto:

- rw-r ken r ken 1 ken admin 181 Jan 27 15: 49/home/ken/foo / bar

Si no está seguro de dónde está el archivo, siempre puede cambiar la ubicación de búsqueda. Siempre y cuando la ruta de búsqueda comience con "/", obtendrá una ruta absoluta a cambio. Si está buscando una ubicación (como /) donde va a obtener una gran cantidad de errores de permiso denegado, entonces recomendaría redirigir el error estándar para que pueda ver los resultados de búsqueda:

Find / - name bar-exec ls-l {}; \ 2>/dev / null

(2> es la sintaxis para shells borne y bash, pero no funcionará con c shell. Puede funcionar en otras conchas también, pero solo sé con certeza que funciona en bourne y bash).

Espero que esto ayude!

 4
Author: Trudius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-29 13:43:55

El $PWD es una buena opción por Mateo arriba. Si desea que find solo imprima archivos, también puede agregar la opción-type f para buscar solo archivos normales. Otras opciones son" d " solo para directorios, etc. Así que en su caso sería (si quiero buscar solo archivos con .c ext):

find $PWD -type f -name "*.c" 

O si desea todos los archivos:

find $PWD -type f

Nota: No puede crear un alias para el comando anterior, porque bas PWD se completa automáticamente en su directorio personal cuando bash establece el alias.

 2
Author: Gurpreet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-23 09:42:44
lspwd() { for i in $@; do ls -d -1 $PWD/$i; done }
 1
Author: rwilhelm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-31 00:08:33
ls -1 | awk  -vpath=$PWD/ '{print path$1}'
 -1
Author: Albert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-23 20:37:26

find / -print hará esto

 -2
Author: David Arno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-29 09:26:47