我很想有一个更优雅的解决方案来批量重命名文件,如下所示。文件格式为 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
You must avoid parsing output of
ls
command.
关于linux - AWK 使用的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61010458/