Bash 스크립트를 사용하여 파일 이름 바꾸기

Bash 스크립트를 사용하여 파일 이름 바꾸기

상위 경로는 이고 /opt/data/, 폴더 안에 여러 개의 하위 폴더가 있고 data, 해당 하위 폴더 안에 여러 개의 파일이 있으며, bash를 사용하여 그 중 일부만 이름을 바꾸고 싶습니다.

원본 파일 이름:

WK6LZTPR99999999_dig_2017-07-10 01:55:57.xy

모든 하위 디렉터리의 모든 파일을 다음으로 변경하고 싶습니다.

WK6LZTPR99999999_cur_2017-07-10 01:55:57.mp3

이 시나리오를 명확하게 설명했으면 좋겠습니다.

philiphs가 제공한 솔루션은 잘 작동하지만 디렉토리의 다른 파일 확장자도 변경합니다. .xy 파일 확장자만 변경하고 해당 확장자를 제외해야 합니다.

답변1

for 루프를 사용하여 모든 파일을 반복한 다음 구문 ${variable%suffix}을 사용하여 접미사를 제거하고 마지막으로 중간 부분을 다음 구문으로 바꿀 수 있습니다 ${variable/search/replace}.

for file in /opt/data/*/*; do
  file="${file%xy}"
  mv "$file"xy "${file/dig/cur}mp3"
done

관련 정보