私の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