【发布时间】:2020-07-15 12:55:44
【问题描述】:
我希望有一个更优雅的文件批量重命名解决方案,如下所示。文件格式为DEV_XYZ_TIMESTAMP.dat,我们需要它们为T-XYZ-TIMESTAMP.dat。
最后,我将它们全部(在同一侧)复制到renamed 文件夹中:
ls -l *dat|awk '{system("cp " $10 " renamed/T-" substr($10, index($10, "_")+1))}'
所以,首先我列出了所有 dat 文件,然后选择第 10 列(文件名)并使用 awk 的 system 函数执行命令。 该命令本质上是将原始文件名复制到具有新文件名的 renamed 文件夹中。 通过在(包括)_ 之前删除 (awk substring function) 前缀并添加“T-”前缀来创建新文件名。
有效地:
cp DEV_file.dat renamed/T-file.dat
有没有办法将cp 或mv 与一些正则表达式规则一起使用,以更优雅的方式实现同样的效果?
谢谢
【问题讨论】:
-
Awk 是一种用于处理文本的工具。 Shell 是一种用于操作文件/进程和对工具的调用排序的工具。您正在尝试使用 awk 来操作(重命名)文件,因此您使用了错误的工具 - 只需使用 shell。