Cómo enumerar todos los files en un directory con routes absolutas

Necesito un file (preferiblemente un file .list) que contenga la ruta absoluta de cada file en un directory.

Ejemplo dir1: file1.txt file2.txt file3.txt

listOfFiles.list :

 /Users/haddad/dir1/file1.txt /Users/haddad/dir1/file2.txt /Users/haddad/dir1/file3.txt 

¿Cómo puedo lograr esto en Linux / Mac?

Solutions Collecting From Web of "Cómo enumerar todos los files en un directory con routes absolutas"

 ls -d "$PWD"/* > listOfFiles.list 

Puedes usar find. Suponiendo que solo quiere files regulares, puede hacer:

 find /path/to/dir -type f > listOfFiles.list 

Puede ajustar el parámetro de tipo según corresponda si desea otros types de files.

Tenga en count que en:

 ls -d "$PWD"/* > listOfFiles.list 

Es el shell que calcula la list de files (no ocultos) en el directory y pasa la list a ls . Solo imprimo esa list aquí, así que podrías hacer lo siguiente:

 printf '%s\n' "$PWD"/* 

Para ver solo files regulares –

 find "$PWD" -type f > output 

En un entorno anterior de Linux, tenía el command de resolve que estandarizaría las routes, incluida la creación de una ruta relativa en una ruta absoluta. No puedo encontrarlo ahora, así que tal vez fue escrito por alguien de esa organización.

Puede crear su propio script usando funciones en las bibliotecas estándar de Python o Perl (y probablemente también en otros idiomas).

resolve.py :

 #!/bin/env python import sys import os.path for path in sys.argv: print os.path.abspath(path) 

resolve.pl :

 #!/bin/env perl use warnings; use Cwd qw ( abs_path ); foreach (@ARGV) { print abs_path($_), "\n"; } 

Entonces, resolverías tu problema con:

 resolve.py * > listOfFiles.list 

Con este command, también puedes hacer cosas como esta:

 cd /root/dir1/dir2/dir3 resolve.py ../../dir4/foo.txt # prints /root/dir1/dir4/foo.txt 

Otra forma de tree , no mencionada aquí, va recursivamente y a diferencia de find o ls no tiene ningún error (como: Permission denied , Not a directory ) también obtiene la ruta absoluta en caso de que quiera alimentar los files a xargs u otro command

 tree -fai /pathYouWantToList >listOfFiles.list 

el significado de las opciones:

 -a All files are printed. By default tree does not print hidden files (those beginning with a dot `.'). In no event does tree print the file system constructs `.' (current directory) and `..' (previous directory). -i Makes tree not print the indentation lines, useful when used in conjunction with the -f option. -f Prints the full path prefix for each file. 

Puedes usar realpath o readlink :

 ls | xargs realpath 
  • realpath : devuelve el nombre de ruta absoluto canonicalizado
  • readlink : leer el valor de un enlace simbólico