ファイル Bash スクリプトの名前変更 - ループの問題

ファイル Bash スクリプトの名前変更 - ループの問題

私のファイルをインポートして名前を変更するスクリプトを作成しようとしています。PT-1到着ポイント2 例えば。スクリプトはtestfile_pt-1_date.tsファイルの名前を正しく変更し、それを指定されたフォルダに正しくコピーします。

私が持っている問題は、たとえばファイルがある場合です。 testfile_pt_date.ts、ファイル名は変更されませんでしたが、コピーされました。これは私が望むものではありません。ファイルを無視したいです。 for doループがファイルを受け入れる理由がわかりません。指す私がどこに間違っているのか知っている人はいますか?

#! /bin/bash

file=$1
for file in *_pt-1_*.ts
do
echo "$1"    
a="$(echo $1 | sed s/_pt-1_/_pt2_/)"
cp "$1" "$HOME/SGTV/${a##*/}"
echo "$a"
done

ベストアンサー1

ループの代わりに専用ツールを使用することをお勧めしますrename。読みやすく、書き込みが速く、混乱を防ぎます。

rename 's/_pt-1_/_pt2_/' *_pt-1_*.ts


警告:renameはい混乱ほとんどのディストリビューションで。 Debianまたはその派生製品を使用している場合は、パッケージ(バイナリだけでなく)がインストールされていることをrename確認してください。rename

おすすめ記事