linux - AWK 使用的替代方案

标签 linux bash shell awk mv

我很想有一个更优雅的解决方案来批量重命名文件,如下所示。文件格式为 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 的系统函数执行命令。
该命令本质上是将原始文件名复制到具有新文件名的重命名文件夹中。
通过在(包括)_ 之前删除(awk 子字符串函数)前缀并添加“T-”前缀来创建新文件名。

有效地:
cp DEV_file.dat renamed/T-file.dat

有没有办法使用cpmv与一些正则表达式规则一起以更优雅的方式实现相同的目标?

谢谢

最佳答案

你可以使用这个脚本:

for file in *.dat; do
   f="${file//_/-}"
   mv "$file" renamed/T-"${f#*-}"
done

You must avoid parsing output of ls command.

关于linux - AWK 使用的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61010458/

相关文章:

linux - LISTER shell 变量的用途

java - 使用 Runtime.exec() 从 Java 程序运行 ASP 程序时出现问题

bash - Jenkins 管道 sh : command not found - are certain commands not available now?

linux -/用户/bin/ld : Cannot find SDL?

c - 系统调用写入

bash - 使用 sed 或 awk 将字段替换为另一个值

java - 如何使用shell脚本执行java代码?

linux - 看点 : "execution time" on the every linux command executed

linux - 系统调用是应用程序/用户程序请求操作系统服务来执行特权操作的唯一方式吗?

python - 如何从Python实时读取终端输出?