디렉토리의 모든 파일 이름을 *.ts에서 *.mkv로 바꾸고 싶습니다.

디렉토리의 모든 파일 이름을 *.ts에서 *.mkv로 바꾸고 싶습니다.

내 echo 명령은 디렉터리에 있는 .ts 파일의 모든 파일 이름을 바꿀 때 작동하지만 새 변수로 만들려고 하면 작동하지 않습니다.

#!/bin/sh
for file in "${1}"/*.ts; do
  echo ${file} | sed -e 's|.ts|.mkv|'
  new_name=${file} | sed -e 's|.ts|.mkv|'
done

답변1

가장 간단한 해결책은 할당을 다음으로 변경하도록 지시하는 것입니다.

new_name=$( echo ${file} | sed -e 's|.ts|.mkv|' )

그러나 더 나은 해결책은 다음과 같습니다.

new_name="${file%.ts}.mkv"

답변2

find . -maxdepth 1 -type f -name '*.ts' -exec rename .ts .mkv {} "+"

파일이 포함된 디렉터리에서 실행합니다 .ts.

답변3

rename당신이 찾고 있는 것:

rename '.ts' '.mkv' "${1}/*.ts"

답변4

#!/bin/sh
for file in "${1}"/*.ts; do
   mv "${file}" "$(basename "${file}").mkv"
done

관련 정보