使用正则表达式在 for 循环中重命名 bash 中的文件

使用正则表达式在 for 循环中重命名 bash 中的文件

我有如下文件:

part-00001.lzo?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=recsys2021-website-service-acc%40twttr-recsys-2021-dev.iam.gserviceaccount.com%2F20210325%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20210325T183938Z&X-Goog-Expires=25

part-00002.lzo?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=recsys2021-website-service-acc%40twttr-recsys-2021-dev.iam.gserviceaccount.com%2F20210325%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20210325T183938Z&X-Goog-Expires=25

……

我想将它们重命名为:

part-00000.lzo part-00001.lzo ……

并删除扩展名后面的部分.lzo

然后我想按时间顺序将它们连接成 1 个文件并删除所有压缩.lzo文件。

这是我写的:

 for f in  *.lzo\?*

 do
   mv $f * not sure what should I write here *
 done

 cat part-* > train.csv

 rm -rf part-*

我不确定应该写什么来代替新重命名的文件。谢谢

答案1

您可以尝试这样做来重命名:

for i in part*; do mv "$i" "${i%%.lzo*}.lzo"; done

相关内容