Tengo una lista de nombres de archivo (con la ruta completa) y quiero crear un búfer Dired que enumere este conjunto de archivos. ¿Cómo voy a hacer eso?
¿Cómo creo un búfer Dired a partir de una lista de nombres de archivo?
Sin usar dependencias externas.
(find-file your-directory-path)
para obtener eldired
búfer relevante (por ejemplo,(find-file "/tmp/")
abrirá sutmp
directorio en undired
búfer).Respuestas:
C-h f dired
te dice la respuesta Simplemente pasedired
, comoDIRNAME
argumento, una lista que tenga como vehículo el nombre del búfer Dired que desea (cualquier cadena) y como cdr la lista de nombres de archivos que desea que aparezcan en el búfer. En general, desea utilizar nombres de archivo absolutos. Por ejemplo:Dependiendo de su plataforma, los nombres de los archivos y directorios inexistentes que ingrese podrían ignorarse (no figurar en la lista) o generar un error. Lo primero sucede si lo usa
ls-lisp.el
(por ejemplo, MS Windows). Puede forzar el uso dels-lisp
cualquier plataforma, si lo desea (perols-lisp
tiene menosls
opciones), haciendo esto:Si usa la biblioteca Dired + (
dired+.el
), puede elegir interactivamente archivos y directorios para enumerar: simplemente proporcionedired
un argumento de prefijo no positivo (es decir, <= 0). Luego se le solicitará repetidamente los directorios y los nombres de archivo que desea enumerar. Puede usar comodines de nombre de archivo (es decir,*
para globbing), para incluir los archivos y directorios coincidentes. UseC-g
para finalizar la entrada.En otras palabras, en lugar de enumerar un solo directorio, el búfer Dired puede enumerar cualquier cantidad de directorios y nombres de archivos, que incluso pueden pertenecer a diferentes árboles de directorios.
(Un argumento de prefijo no negativo (es decir,> = 0) le solicita los
ls
conmutadores de la lista. Por lo tanto, un argumento de prefijo cero le solicita tanto los modificadores como los archivos / directorios para enumerar: primero losls
modificadores y luego los archivos / directorios.)fuente
(insert ...)
para insertar texto en un búfer.dired
es una función elisp. Simplemente evalúe esto:(dired '("my-list" "/home/rekado/dev/script.scm" "/home/rekado/another-file"))
y obtendrá un búfer directo que contiene estos archivos como escribió @Drew.Aquí hay un comando para hacer esto cuando la lista de archivos está en un búfer, con un archivo por línea.
fuente