当我尝试移动多个文件时出现此问题。我有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
如何在终端中解决此问题?
我将非常感激。
答案 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
替我们完成该过程。