【问题标题】:rm a file when there are similar names of files in directory? [closed]rm 一个文件,当目录中有相似的文件名时? [关闭]
【发布时间】:2015-10-31 13:03:40
【问题描述】:

假设在一个目录中,您的名称很长,彼此相似。

有没有办法使用rm浏览目录来选择要删除的那个?

可能类似于使用 vim 打开目录时浏览目录的方式...

【问题讨论】:

  • rm -i - 交互模式?
  • @EdHeal rm -i 只是问你是否要删除你已经写了文件名的文件...
  • 你可以使用globs (*, ? in the shell)
  • shell 是一个命令解释器,而不是一个文件管理器。你想要mc这样的东西。

标签: linux bash rm


【解决方案1】:

只要您有支持-d 选项的xargs 版本,您就可以按照这些思路进行操作:

ls > list_of_files

创建一个包含您的文件名的文件list_of_files。然后编辑这个文件(例如,vim),删除你想保留的文件,留下你想删除的文件。那么:

< list_of_files xargs -d\\n -n1 echo rm --

删除列表中的文件。

请注意,我使用了:-n1 选项并留下了echo:原样,此命令是无害的。它只会在您的终端上显示将执行哪些rm 命令。如果您觉得这不错,请删除 -n1echo

不要使用此方法如果您的 xargs 不支持 -d 选项,除非您彻底检查您的文件名不包含空格、引号、反斜杠和其他有趣的角色。

此外,请确保您的文件名首先不包含换行符(并检查 list_of_files 看起来不错)。

【讨论】:

  • 感谢您的回答,我也可以在编辑文件后使用rm directory/$(cat list_of_files) 对吗?我认为会有类似浏览的东西:(
  • @orestiss:不,不要使用rm $(cat list_of_files):如果文件名或全局字符中有空格(如?[] 或@987654340),它将中断@)。更糟糕的是,rm directory/$(cat list_of_files) 只会在directory/ 的第一个单词前面加上directory/
【解决方案2】:

要列出所有可能性(在 bash 中),请在命令提示符处键入“rm space”,它会询问您是否要显示所有文件。然后你就可以输入了。

即使您使用 bash 标记了此问题,您也可以尝试 zsh。如果你输入“rm space”,你可以点击几次tab,然后你就可以使用光标键导航到有趣的文件名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 2022-08-19
    • 2019-03-04
    • 1970-01-01
    相关资源
    最近更新 更多