删除“-&引用;在emacs dired模式下的文件名的

删除“-&引用;在emacs dired模式下的文件名的,emacs,elisp,Emacs,Elisp,我想在可编辑目录模式下删除文件名中的“-” 以下是文本 -rw-r--r--+1 dayua mkpasswd 663 11月14日18:11 Add-Binary.py -rwxr-xr-x+1 dayua mkpasswd 799 11月14日18:11 add-two-link-list.py -rw-r--r--+1 dayua mkpasswd 571 11月14日18:11 Anagrams.py -rwxr-xr-x+1 dayua mkpasswd 1041 11月14日18:

我想在可编辑目录模式下删除文件名中的“-” 以下是文本

  • -rw-r--r--+1 dayua mkpasswd 663 11月14日18:11 Add-Binary.py
  • -rwxr-xr-x+1 dayua mkpasswd 799 11月14日18:11 add-two-link-list.py
  • -rw-r--r--+1 dayua mkpasswd 571 11月14日18:11 Anagrams.py
  • -rwxr-xr-x+1 dayua mkpasswd 1041 11月14日18:11 Balanced-Binary-Tree.py
  • -rwxr-xr-x+1 dayua mkpasswd 1241 11月14日18:11 Best-profit-III.aux.py
  • -rwxr-xr-x+1 dayua mkpasswd 830 11月14日18:11最佳买卖时间股票-II.py
  • -rwxr-xr-x+1 dayua mkpasswd 1605 11月14日18:11最佳买卖时间股票III.py
  • -rw-r--r--+1 dayua mkpasswd 5323 11月20日14:48 Binary-Search-Best-Practice.py

请给出一些建议。

简短回答:进入dired可编辑模式(aka
wdired
)后,转到缓冲区的开头并执行M-%-RET-RET

M-%是
查询替换
的快捷方式;它将提示您要替换的内容(
-
)和替换的内容(空字符串),然后将您置于交互模式,其中键
告诉它替换所有事件


wdired将正确地(在替换时)处理目录列表权限部分的“-”字符。

我的第一反应,特别是如果这只是一次性更新,是录制键盘宏

C-x (                        ; to begin macro
C-e                          ; to end of line
M-<space>                    ; mark beginning of region
C-r :                        ; search backward to time delimiter (:)
M-x replace-string - <blank> ; replace - with nothing
C-a                          ; beginning of line
C-n                          ; next line
C-x )                        ; end macro
如果有很多行,可以在宏调用前加上重复次数(本例中为50次)

50c-xe

我非常有兴趣学习这个问题的任何正则表达式解决方案

你想做什么?您想更改文件系统中文件的文件名,还是只想查看不带“-”号的文件?非常感谢。我有一个更复杂的案子。如果我有上面的纯文本,我只想删除最右边的文件名,而不包括左边的属性,我该怎么办?我不确定在您的示例中“最右边的文件名”和“左边的属性”是什么。“-rw-r--r--+1 dayua mkpasswd 663 Nov 14 18:11 Add Binary.py”只是删除“-”来自“Add Binary.py”,不包括文本“-rw-r--r--+”若您使用的是wdired模式,则EMCA应该省略并替换该文本
C-x e
<ESC> 50 C-x e