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

おすすめ記事