¿Cómo puedo generar una lista de archivos con su ruta absoluta en Linux?
Estoy escribiendo un script de shell que toma rutas de archivos como entrada.
Por este motivo, necesito generar listados de archivos recursivos con rutas completas. Por ejemplo, el archivo bar
tiene la ruta:
/home/ken/foo/bar
pero, hasta donde puedo ver, ambos ls
y find
solo dan listados de rutas relativas:
./foo/bar (from the folder ken)
Parece un requisito obvio, pero no veo nada en las páginas find
man ls
.
¿Cómo puedo generar una lista de archivos en el Shell incluidas sus rutas absolutas?
Si proporciona find
una ruta absoluta para empezar, imprimirá rutas absolutas. Por ejemplo, para buscar todos los archivos .htaccess en el directorio actual:
find "$(pwd)" -name .htaccess
o si su shell se expande $PWD
al 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ó usarlo pwd -P
si desea resolver enlaces simbólicos en su directorio actual.
readlink -f filename
da el camino absoluto completo. Pero si el archivo es un enlace simbólico, obtendrá el nombre final resuelto.
Use esto para directorios (el /
after **
es necesario en bash para limitarlo a directorios):
ls -d -1 "$PWD/"**/
esto para archivos y directorios directamente bajo el directorio actual, cuyos nombres contienen .
:
ls -d -1 "$PWD/"*.*
esto para todo:
ls -d -1 "$PWD/"**/*
Tomado de aquí http://www.zsh.org/mla/users/2002/msg00033.html
En bash, **
es recursivo si habilita shopt -s globstar
.
Puedes usar
find $PWD
en fiesta
ls -d "$PWD/"*
Esto busca sólo en el directorio actual . Cita "$PWD" en caso de que contenga espacios.