【问题标题】:I need to rename multiple files by removing the multiple dates prefixing the files我需要通过删除文件前缀的多个日期来重命名多个文件
【发布时间】:2021-04-06 12:44:47
【问题描述】:

我通过向每个目录多次添加前缀意外重命名了所有文件。我已经尝试了“重命名”命令和一些 peal 脚本,但我仍然无法解决名称更改。关于如何一次删除所有日期以便我只有目录的任何想法?

例子

mv 2020-11-30-2020-11-30...2020-11-30-Documents Documents/

【问题讨论】:

  • 我试过了。请出示代码。同时给出预期结果和实际结果。此外,请勿将文本作为图像发布。直接将其作为文本复制到问题中。
  • 请在代码块中提供输入和预期输出。
  • 您拥有rename 命令的哪个变体——Perl 版本或“另一个”。使用 Perl 版本,您应该能够使用 rename 's/2020-11-30-//g' 2020-11-30-* 来完成这项工作。它会给你留下像buddyCmnd_AliasDocumentsDownloads、... 这样的名字

标签: linux bash shell scripting debian


【解决方案1】:

这是一个不需要使用regex 的解决方案。基于vimvVscode中的多光标版本:

这两个软件包都在大多数 Linux 发行版中提供:

apt install vimv codium

打开一个终端并将 codium 设置为您的编辑器:export EDITOR="codium -w"

在相应文件夹中浏览终端并输入vimv。回车

Vscodium 打开,并显示文件和文件夹列表

在你想要的地方添加游标。引用from the doc:

您可以使用Alt+Click 添加辅助光标(渲染得更细)。其他 添加更多游标的常用方法是使用Shift+Alt+DownShift+Alt+Up 在下方或上方插入光标。

删除任何你想要的,保存文件,然后退出

文件和文件夹应该相应地重命名

结帐the website of vimv 了解更多信息和截屏视频

【讨论】:

    【解决方案2】:

    这些命令都有效:

    ls -1 | sed 's/.*-\(.*\)/mv "&" "\1"/'
    rename 's/2020-11-30-//g' 2020-11-30-*
    

    【讨论】:

      【解决方案3】:

      mv 2020-11-30-2020-11-30...2020-11-30-Documents Documents/

      假设您的文件名不包含换行符、引号。或其他特殊字符:

      \ls -1|sed 's/.*-\(.*\)/mv "&" "\1"/'
      

      您可以检查上述命令产生的输出,如果看起来不错,请将输出通过管道发送到|sh

      注意:ls 之前的反斜杠用于在您有 ls 别名时忽略您的别名。

      【讨论】:

      • 只要基本名称本身不包含破折号,它就可以工作。如果一个文件是2020-11-30-Important-File(日期重复了几次),这个sed脚本会给你留下File而不是Important-File。希望没有2020-11-30-Unimportant-File 也被重命名为File - 因为那时重要的文件被不重要的文件覆盖了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 2012-04-29
      • 2021-02-14
      • 1970-01-01
      • 1970-01-01
      • 2014-01-19
      • 2013-05-10
      相关资源
      最近更新 更多