diff options
| author | Yuchen Pei <id@ypei.org> | 2024-04-02 15:46:04 +1100 | 
|---|---|---|
| committer | Yuchen Pei <id@ypei.org> | 2024-04-02 15:46:04 +1100 | 
| commit | 60d73d1ec7347f9b409965c2721d2e75adfb9889 (patch) | |
| tree | a9b2eded304e4e49c1ce08c2baf9ae7041e118af /emacs/.emacs.d/lisp/my/my-dired.el | |
| parent | 6782e70a83773b84b5dedc534f99e467f0118d20 (diff) | |
[emacs] add renaming to dired
rename files by mtime
also a new command to use ytdl without tor
Diffstat (limited to 'emacs/.emacs.d/lisp/my/my-dired.el')
| -rw-r--r-- | emacs/.emacs.d/lisp/my/my-dired.el | 38 | 
1 files changed, 38 insertions, 0 deletions
| 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 | 
