macos - 我可以在 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
如何在终端解决这个问题?
我将不胜感激。
解决方案
如果您只是想在命令行上简化长文件名的输入,在 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
为我们完成该过程。
推荐阅读
- amazon-web-services - 使用 .ebextensions 添加到 ngnix 配置
- r - 如何在 R 中输入约束符号而不会出现错误消息
- dataframe - 将 HDF5 作为 Dask Dataframe 读取时出错,为什么?
- java - Python 等效于来自 RSA 密钥 Java 代码的密码加密
- nginx - 将 www 重定向到非 www 会导致重定向过多
- python - 推荐python库/模型/数据挖掘工具以查找数字序列中的模式
- java - 使用 AWS 加密 SDK 设置 maven 项目的困难
- sql - 如何从 Db2 中的十进制字段中获取无效值列表?
- c# - ThreadPool 如何处理传递的变量
- python - python画布更新 - 绘制时令人讨厌的闪光