Frage Wie kann ich in emacs dired einen Befehl für mehrere markierte Dateien ausführen?


Ich habe mehrere Dateien im Dired-Modus markiert, und ich möchte einen Befehl ausführen (sagen wir (delete-trailing-whitespace) auf jedem von ihnen.

Gibt es einen eingebauten Weg, oder muss ich es selbst schreiben?

Grundsätzlich möchte ich sowas machen (dired-do-shell-command) aber ich möchte lieber einen Emacs-Ausdruck als einen Shell-Befehl verwenden. Ich möchte dies innerhalb von Emacs auf die Dateien, die ich markiert habe, tun, so dass ich nicht verwenden kann -batch.


4
2017-08-17 00:52


Ursprung




Antworten:


Ich habe etwas geschrieben, um zu tun, was ich will, falls jemand anderes es nützlich findet:

Aktualisieren: Diese Lösung wurde mit einem allgemeineren Befehl aktualisiert.

(defun mrc-dired-do-command (command)
  "Run COMMAND on marked files. Any files not already open will be opened.
After this command has been run, any buffers it's modified will remain
open and unsaved."
  (interactive "CRun on marked files M-x ")
  (save-window-excursion
    (mapc (lambda (filename)
            (find-file filename)
            (call-interactively command))
          (dired-get-marked-files))))

Jetzt M-x mrc-dired-do-command delete-trailing-whitespace macht was ich will.

Ich würde mich freuen, wenn jemand mich darauf hinweisen würde, dass ich das nicht tun musste, und ich einen offensichtlichen Befehl wie übersehen habe dired-do-command.


7
2017-08-17 01:08





AFAIK dired hat keine solche Möglichkeit, aber ibuffer verwendet - dired, um alle Dateien zu markieren, die Sie bearbeiten möchten (m), Besuche sie (C-u F), run ibuffer (M-x ibuffer [RET]), markieren Sie alle Puffer (m) und aufrufen ibuffer-do-eval (E), fügen Sie den Ausdruck, den Sie auswerten möchten, in jeden Puffer ein und speichern Sie alle (S) und schließe sie (D).


4
2018-04-15 19:36





Das ist nicht ganz das, wonach Sie gefragt haben, aber Sie könnten Puffer in ibuffer markieren und 'E' (ibuffer-do-eval FORM) verwenden

Ich weiß, dass es in der eshell erlaubt, elisp für Shell-Skripte zu verwenden (sozusagen), damit Sie es wahrscheinlich einfacher von der eshell aus tun können.


1
2017-08-26 19:35



Danke shapr, das ist ziemlich nützlich, obwohl ich es direkt machen wollte. - Matt Curtis