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.

그런 다음 시간순으로 하나의 파일로 연결하고 모든 압축 파일을 삭제하고 싶습니다 .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

관련 정보