From 60d73d1ec7347f9b409965c2721d2e75adfb9889 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Tue, 2 Apr 2024 15:46:04 +1100 Subject: [emacs] add renaming to dired rename files by mtime also a new command to use ytdl without tor --- emacs/.emacs.d/lisp/my/my-dired.el | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'emacs/.emacs.d/lisp/my/my-dired.el') diff --git a/emacs/.emacs.d/lisp/my/my-dired.el b/emacs/.emacs.d/lisp/my/my-dired.el index c90b8c4..ee6f7b0 100644 --- a/emacs/.emacs.d/lisp/my/my-dired.el +++ b/emacs/.emacs.d/lisp/my/my-dired.el @@ -151,5 +151,43 @@ With a prefix-arg, call it without using `vc-rename-file'." (advice-add 'dired-next-line :after #'my-dired-display-file) (advice-remove 'dired-next-line #'my-dired-display-file))) +(defun my-dired-rename-by-mtime-at-point () + "Generates new file name based on mtime. + +Format: yyyymmdd_hhmmss.ext" + (interactive) + (my-dired-rename-by-mtime (expand-file-name (dired-file-name-at-point)))) + +(defun my-dired-rename-by-mtime (file-name) + "Generates new file name based on mtime. + +Format: yyyymmdd_hhmmss[_N].ext" + (let* ((ext (file-name-extension file-name)) + (dir (file-name-directory file-name)) + (new-file-name-base + (file-name-concat + dir + (concat + (format-time-string + "%Y%m%d_%H%M%S" + (file-attribute-modification-time (file-attributes file-name)))))) + (new-file-name + (format "%s.%s" new-file-name-base ext)) + (counter 0)) + (unless (equal file-name new-file-name) + (while (file-exists-p new-file-name) + (setq counter (1+ counter) + new-file-name (format "%s_%d" new-file-name-base counter))) + (dired-rename-file file-name new-file-name nil)))) + +(defun my-dired-do-rename-by-mtime () + "Generates new file name based on mtime. + +Format: yyyymmdd_hhmmss.ext" + (interactive) + (seq-do + 'my-dired-rename-by-mtime + (dired-map-over-marks (dired-get-filename) nil))) + (provide 'my-dired) ;;; my-dired.el ends here -- cgit v1.2.3