linux - AWK 使用的替代方案
问题描述
我希望有一个更优雅的文件批量重命名解决方案,如下所示。文件是格式的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
有没有办法使用cp
或mv
与一些正则表达式规则一起以更优雅的方式实现相同的目标?
谢谢
解决方案
你可以使用这个脚本:
for file in *.dat; do
f="${file//_/-}"
mv "$file" renamed/T-"${f#*-}"
done
推荐阅读
- mysql - 您在 /usr/bin/pt-online-schema-change 第 4456 行没有 PROCESS 权限,
1号线 - java - SonarQube:“存储“productAllergenInfos”的副本”
- gemfire - 从非 PCF (VSI) 平台上的 Spring Boot gemfire 客户端应用程序连接到关键云缓存
- r - R:基于每个患者的进入日期的顺序排名(1、1、1、2、2、2等)?
- numpy - 将形状为 x,y 的 numpy 数组转换为大小为 x 的列表,每个元素都是一个形状为 (y,) 的 numpy 数组
- python - python - 如何在python中使用pandas连接来自同一列的项目?
- google-chrome-extension - 将 Manifest V2 升级到 V3,将
在 Web 可访问资源中触发升级时禁用和警告? - python - 从 Java 启动 python Http 服务器
- c# - 两个 exe 是否可以从 DLL 访问内存中的同一个对象?
- amazon-web-services - AWS EventBridge 规则能否以另一个账户中的 Kinesis Firehose 传输流为目标?