내 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