我可以在macOS上使用终端命令“ mv”移动几个文件吗?

时间:2019-04-20 21:55:22

标签: macos terminal command 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

如何在终端中解决此问题?

我将非常感激。

1 个答案:

答案 0 :(得分:0)

如果您只是想简化命令行中长文件名的输入,在bash中,您可以使用 tab 键来简化输入。例如输入命令的开始,例如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以实际执行重命名:< / p>

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

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