首页 > 解决方案 > 我可以在 macOS 上使用终端命令“mv”移动多个文件吗?

问题描述

当我尝试移动多个文件时,我遇到了这个问题。我有 3 个文件需要在不放置子文件夹的情况下移动。

这些文件的名称很长,这使任务更加困难。

例子:

Lógica_matemática_para_ingeniería_de_sistemas_y_co..._----_(Pg_81--102).pdf
Lógica_matemática_para_ingeniería_de_sistemas_y_co..._----_(Pg_103--122).pdf
Lógica_matemática_para_ingeniería_de_sistemas_y_co..._----_(Pg_123--155).pdf

如何在终端解决这个问题?

我将不胜感激。

标签: macosterminalcommandmv

解决方案


如果您只是想在命令行上简化长文件名的输入,在 bash 中您可以使用tabkey 来简化输入。例如,输入命令的开头,例如mv L,然后按一下tab键,它会自动完成直到名称不明确(例如,直到页码)。自动完成功能使输入这些名称变得非常容易。

如果您要重命名一堆文件,一个常见的技巧是

  • 用于ls获取相关文件的列表并用于sed构建用于重命名这些文件的脚本,例如:

    $ ls L* | sed 's/^[^0-9]*\([0-9]*\)--\([0-9]*\)).pdf/mv "&" Pages\1-\2.pdf /'
    

    这会查找不是数字​​的字符串,然后获取 之前和之后的数字,--然后输出一个字符串mv,后跟原始名称,然后是包含页码的新名称。我知道这有点毛茸茸,但这是正则表达式的力量。这实际上并没有进行重命名,而是创建了可以进行重命名的命令,如果您选择这样做的话。

    无论如何,这会产生如下文本输出:

    mv "Lógica_matemática_para_ingeniería_de_sistemas_y_co..._----_(Pg_103--122).pdf" Pages103-122.pdf
    mv "Lógica_matemática_para_ingeniería_de_sistemas_y_co..._----_(Pg_123--155).pdf" Pages123-155.pdf
    mv "Lógica_matemática_para_ingeniería_de_sistemas_y_co..._----_(Pg_81--102).pdf" Pages81-102.pdf
    

    sed如果您想找出丰富的可用替代方案,您可以谷歌教程/示例。而且,如果它变得非常复杂,还有其他选择,包括awk和/或 shell 脚本。

  • 无论如何,一旦您目视检查并确定这些生成的mv命令看起来不错,您可以重复该过程,这次将输出管道传输sh到实际执行重命名:

    $ ls L* | sed 's/^[^0-9]*\([0-9]*\)--\([0-9]*\)).pdf/mv "&" Pages\1-\2.pdf /' | 嘘
    

您可以安装其他文件重命名实用程序,但老式的 Unix 人员通常会sed为我们完成该过程。


推荐阅读