¿Hay alguna manera, posiblemente usando un paquete, para enumerar recursivamente todos los archivos (con rutas) y subdirectorios (o al menos los subdirectorios vacíos , ya que las rutas a los no vacíos se pueden extraer de las rutas de los archivos que contiene) del directorio actual?
Lo más cercano que pude encontrar es la projectile-find-file
función del projectile
paquete (alternativamente, la helm-projectile-find-file
función del helm-projectile
paquete), pero no parece ser capaz de enumerar carpetas vacías. Además, parece funcionar solo con Git y otros repositorios de control de versiones, pero puede haber una solución para esta limitación.
helm
oivy
, es decir, que los resultados se mostrarán en unahelm
oivy
buffer. Si es imposible satisfacer ambos requisitos, el segundo es más importante para mí.Respuestas:
Suponiendo que use
ivy
, puede usar esta funciónfuente
helm
?helm
.ivy
Es bastante ligero. Dale un tiro.directorio-archivos-recursivamente
(Creo que esto se agregó en Emacs 25)
Aquí está el enlace al manual: https://www.gnu.org/software/emacs/manual/html_node/elisp/Contents-of-Directories.html
Ejemplo
fuente
include-directories
at
? Estoy trabajando en Emacs 24, y no puedo probar esto en este momento, pero puedo probar esto en casa en pocas horas.Esta respuesta supone que desea mostrar una lista de los nombres de archivo y directorio, en lugar de obtener una lista Lisp de ellos.
Utilice los comandos estándar de Emacs
find-dired
,find-name-dired
ofind-grep-dired
. El archivo encontrado y los nombres de directorio se muestran en un búfer en modo Dired. (Puede poner todo el poder de Dired para trabajar en los resultados).Si usa la biblioteca,
find-dired+.el
entonces tiene versiones mejoradas de esos comandos estándar de Emacs, además tiene un comandofind-time-dired
, que encuentra archivos que son más nuevos o más antiguos que una marca de tiempo dada.fuente
find-dired
es exactamente lo que estoy buscando, pero ¿hay alguna manera de imprimir solo nombres? Porque de lo contrario, el nombre de archivo único toma varias líneas sin ningún motivo, ya que no me importa el tamaño, la fecha o los permisos de los archivos. He intentado ejecutar(setcar find-ls-option "-printf '%p\n'")
antesfind-dired
, pero por alguna razón de esta manera no quiero abrir un archivo al presionar Enter sobre un elemento.(
para alternar mostrando más que los nombres de archivo de encendido / apagado. La dejo la mayor parte del tiempo (no se muestran detalles), y solo la activo brevemente cuando quiero verificar algunos detalles.Ver https://github.com/technomancy/find-file-in-project
Hay comandos para buscar archivos o buscar directorios. Pero no ambos.
Si solo desea enumerar todos los subdirectorios y archivos de forma recursiva en un búfer, hay dos comandos integrados en Emacs para edades:
M-x find-dired
. Depende de la herramienta CLIfind
. En Windows, necesita instalar Cygwin o MYSYS que tienefind
M-x find-lisp-find-dired
. Igual quefind-dired
pero escrito en Lisp. Por lo tanto, no hay dependencia de terceros. Además, puede reconocer la configuración regional fuera de la caja. Pero es más lento quefind-dired
fuente
ls
o la función Emacsfind-file
, que enumeran archivos y directorios, incluidos los directorios vacíos.find-dired
yfind-lisp-find-dired
recursivos en el sentido de que enumeran no solo el contenido del directorio actual, sino también el contenido de cada uno de sus subdirectorios, subdirectorios, etc.?Esta respuesta supone que desea obtener una lista Lisp de los nombres de archivo y directorio, en lugar de mostrar una lista de ellos.
Si usa la biblioteca Dired + , puede usar la función
diredp-files-within
. (No necesita estar en un búfer Dired para usarlo).Esto funciona con cualquier versión de Emacs, y es más general que
directory-files-recursively
.Puede pasarle una lista de archivos y directorios, y actúa de forma recursiva en cada uno de ellos.
O puede pasarle una función que devuelva dicha lista.
Si hay un búfer Dired para un directorio que se procesa, la función se invoca en ese búfer para devolver la lista de archivos a incluir.
Por ejemplo, si la función es
dired-get-marked-files
solo se incluyen los archivos y subdirectorios marcados .Puede pasarle un predicado que cada archivo o directorio debe satisfacer. La coincidencia de expresiones regulares es, por supuesto, un tipo de predicado.
Puedes decirle que no siga enlaces simbólicos.
fuente
fuente